2012-02-07 42 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); 
}