Simple MovieClip explorer for AS3

This AS3 script parse embedded movie and show tree of children.

package {
	import flash.display.DisplayObject;
	import flash.display.DisplayObjectContainer;
	import flash.display.Graphics;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.utils.getQualifiedClassName;

	[SWF(frameRate="15")]
	public class MovieClipExplorer extends Sprite {
		[Embed(source="assets/anim.swf#enemy_move")]
		private var MC:Class;

		private var tf:TextField;
		private var mc:MovieClip = new MC;

		private var marker:Sprite = new Sprite;

		public function MovieClipExplorer():void {
			addEventListener(Event.ADDED_TO_STAGE, onStage)
			tf = new TextField;
			var f:TextFormat = new TextFormat("Trebuchet MS", 10)
			tf.defaultTextFormat = f;
			addChild(tf);
			addChild(mc);
			addChild(marker);

			mc.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}

		public function onEnterFrame(e:Event):void {
			tf.text  = "\r---" + new Date + "---\r\r";
			tf.text += mc.currentFrame + " " + mc.currentLabel + "\r";
			parseMovieClip(mc);

			sync(marker, mc.getChildAt(2));
		}

		private function sync(marker:Sprite, target:DisplayObject):void {
			if (target) {
				var r:Rectangle = target.getRect(marker.parent);
				var g:Graphics = marker.graphics;
				g.clear();
				g.lineStyle(0,0xFFFFFF,1);
				g.drawRect(-4, -4, 10, 10);
				g.lineStyle(0,0,1);
				g.drawRect(-5, -5, 10, 10);

				marker.transform.matrix = target.transform.concatenatedMatrix;
			}

		}

		public function onStage(e:Event):void {
			mc.x = stage.stageWidth  >> 1;
			mc.y = stage.stageHeight >> 1;
			tf.width  = stage.stageWidth;
			tf.height = stage.stageHeight;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
		}

		public function parseMovieClip(mc:MovieClip):void {
			parseDisplayObject(mc, " ");
		}

		public function parseDisplayObject(o:*, t:String=""):void {

			var tabs:String = t+"\t";
			if (o) {
				for (var i:uint=0; i<o.numChildren; i++) {
					var c:* = o.getChildAt(i);
					if (c) {
						var name:String = getQualifiedClassName(c);
						tf.text += tabs + i + ". " + name + " " + c.name + "\r";
						if (c is DisplayObjectContainer) parseDisplayObject(c,tabs)
					}
				}
			}
		}
	}
}

0 Responses to “Simple MovieClip explorer for AS3”


  • No Comments

Leave a Reply