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”