2012-02-07 70 views
4


我正在使用BulkLoader将MovieClips和位图加载到我的AS3应用中。位图很容易克隆,但我有复杂的影片剪辑,其中有许多孩子,按钮,符号等一些问题。
我发现很多方法克隆作为位图的动画片段,但有没有办法克隆它作为MovieClip ,所有的属性?在ActionScript3中克隆动画片段

回答

10

有2种方式:

您可以复制装载机:

var newLoader:Loader = new Loader(); 
newLoader.loadBytes(oldLoader.contentLoaderInfo.bytes); 

或者你可以得到MovieClip类和创建它的新实例。但对于这一点,你将不得不编译外部SWF一些文档类(你不必创建。至于文件,只需要输入有某种命名为这个SWF)

var movieType:Class = myMovieClip.constructor; 
var copyMovie:MovieClip = new movieType(); 
+0

我也考虑简单地加载剪辑克隆多次,它会打,以后每加载浏览器的缓存,它不会热曲黑巫术魔法诡计。 – grapefrukt 2012-02-07 09:48:35

+0

使用第二种方式,它的工作。感谢帮助! – Mikhail 2012-02-07 12:49:09

+0

@ grapefrukt,我很久以前就尝试过你的方法,它只适用于加载一些文件,但如果你有30个副本,加载屏幕时会暂停相同的时间与实际加载时间相同,但我的百分比文本将被读取%100 – joshua 2013-03-26 14:02:36

2

http://www.dannyburbol.com/2009/01/movieclip-clone-flash-as3/
http://www.smithmediafusion.com/blog/?p=446

OR

btn1_btn.addEventListener(MouseEvent.CLICK, btnClicked); 

function btnClicked(e:MouseEvent):void{ 
    var btn:MovieClip = MovieClip(e.target); 
    //duplicate the movielcip (add a new one to the stage) 
    var ClassDefinition:Class = Class(getDefinitionByName(getQualifiedClassName(btn))); 
    var myMC:MovieClip = new ClassDefinition; 
    //add it to the container 
    myMC.x = randInt(0,260); 
    myMC.y = 0; 
    gravity_mc.addChild(myMC); 
} 

function randInt(min:int, max:int):int{ 
    return Math.round(Math.random() * (max - min) + min); 
}