如何从复制的加载程序访问movieclip

时间:2013-04-02 06:18:39

标签: actionscript-3 flash-cs5

我无法访问动画片段和复制的加载器的子动画片段。 我正在装一个swf,比如

var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("myswf.swf");
ldr.load(urlReq);

并使用它在舞台上显示,

stage.addChild(ldr);
(ldr.content as MovieClip).star.gotoAndStop(2);

我需要一份这样的副本,所以我使用代码

复制了它
var newLoader:Loader = new Loader();
newLoader.loadBytes(ldr.contentLoaderInfo.bytes);

并将其用作,

var myObj:DisplayObject = newLoader;
tempMC.addChild(myObj);

现在有一个名为'star'的movieClip在实际加载的swf中如何使用它? 请帮助...... :(

1 个答案:

答案 0 :(得分:0)

import flash.display.MovieClip;
import flash.display.DisplayObject;

var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("myswf.swf");
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplereHandler);
ldr.load(urlReq);


function loaderComplereHandler(event:Event) :void {
    event.target.removeEventListener(Event.COMPLETE, loaderComplereHandler);
    var mc:MovieClip = event.target.content as MovieClip;
    addChild(mc);
    mc.getChildByName("star").rotation=50;

    var newLoader:Loader = new Loader();
    newLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCopyComplereHandler);
    newLoader.loadBytes(ldr.contentLoaderInfo.bytes);
}

function loaderCopyComplereHandler(event:Event) :void {
    event.target.removeEventListener(Event.COMPLETE, loaderCopyComplereHandler);
    var mc2:MovieClip = event.target.content as MovieClip;
    mc2.x = 100;
    addChild(mc2);
    mc2.getChildByName("star").rotation=90;
}

此外,您无需使用ldr复制loadBytes。加载完成后,您可以使用ldr制作myswf.swf的多个实例...