interface FAIterator { public function current(); public function next(); public function hasNext(); public function reset(); public function key(); } class DOMElementIterator implements FAIterator { private var _elems:Array; private var _index:Number = -1; private var _size:Number = 0; public function DOMElementIterator(elems:Array) { _elems = elems; _size = _elems.length; } public function next() { var ret:Boolean; if(ret = this.hasNext()) { _index++; } return ret; } public function current() { return _elems[this.key()]; } public function hasNext() { return (_size > _index + 1); } public function reset() { _index = -1; return true; } public function key() { return _index; } } class FACategoriesIterator extends DOMElementIterator { public function FACategoriesIterator(categories:Array) { super(categories); } public function current() { var temp:Object = super.current(); var clip_id:String = 'cat' + temp.attributes.i; // create the moview clip _root.createEmptyMovieClip(clip_id, temp.attributes.i); // set the start position, this will end up changing. _root[clip_id]._x = 0; _root[clip_id]._y = 0; // set what it looks like and move it _root[clip_id].lineStyle(4, 0x666666, 10); _root[clip_id].moveTo() return temp; } } ---------- USAGE -------------- while(it.next()) { temp = it.current(); }