Recursion for Flash

This morning in the train I worked on a little script for recursion. I need this to update a timeline animation on the fly.

With this script you get an Array with every DisplayObject on the currentframe in a DisplayObjectContainer (MovieClip, Sprite etc).

package test {
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
 
	/**
	 * @author Jankees.van.Woezik
	 */
	public class Recursion {
 
		private var childs : Array;
 
		public function getAllChilds(inMC : DisplayObjectContainer) : Array {
			childs = new Array();
			findChilds(inMC);
			return childs;
		}
 
		private function findChilds(inDisplayObjectContainer : DisplayObjectContainer,inCurrentDepth : uint = 0) : void {
 
			var i : uint = inDisplayObjectContainer.numChildren;
			var child : DisplayObject;
 
			while( i -- ) {
				child = inDisplayObjectContainer.getChildAt(i);
 
				if(child is DisplayObjectContainer) {
					childs.push(child);
					findChilds(DisplayObjectContainer(inDisplayObjectContainer.getChildAt(i)), inCurrentDepth + 1);
				}else if(child is DisplayObject) {
					childs.push(child);
				}
			}
		}
	}
}

THE COMMENTS:



  • What Thijs said 3 hours later:

    What is the use of 'numFrames'? And why are you checking on Sprite in stead of DisplayObjectContainer?

    Funny to see you are still using the 'Lost Boys' coding standard ;)

Leave a Reply