2011-10-28 30 views
2

我有一個動畫片段,需要基於外部變量動態複製。 例如clip1,clip2等 此變量發生變化,所以我無法硬編碼它發生的次數。動態創建名稱並將其分配給動畫片段AS3

有沒有辦法動態創建這個動畫片段多次並根據屏幕對齊它?

我無法找到任何谷歌..

問候 Luben

回答

2

如何使用複製的DisplayObject的功能。該函數返回類提供的對象是一個新的實例:

function duplicateDisplayObject(dspObj:DisplayObject):DisplayObject 
{ 
    var class_name:String = getQualifiedClassName(dspObj); 
    var definition:Class = getDefinitionByName(class_name) as Class; 
    return new definition() as DisplayObject; 
} 

(影片剪輯,雪碧和位圖都來自的DisplayObject繼承)

編輯:

如果你需要使用它影片剪輯,您可以簡單:

var myDuplicate:MovieClip = duplicateDisplayObject(myOriginalMovieClip) as MovieClip; 
+0

感謝朱利安正是我一直在尋找 - 記如果我使用的DisplayObject我不能使用.gotoAndPlay()。將其更改爲MovieClip可解決問題。 – Luben

+0

確實如此,但不需要更改duplicateDisplayObject函數。只需在您使用它時施放返回值。看我上面的例子。 – JulianG

+0

請注意,上述功能不適用於其他動畫片段中的動畫片段。任何關於如何複製這些對象的想法? – Luben

0

你將不能夠只是複製一個剪輯的實例。你可以實例化它的類的另一個實例,然後調整它的位置。

var clip1:MyClip = new MyClip(); 

var copies:int = 10; 

for(var i:int = 0, i < copies; i++) { 
    var clone:MyClip = new MyClip(); 
    clone.name = 'clip' + i 
    clone.x = ....; 
    clone.y = ....; 
} 
1
var clip:YourClip; 

for(var i:uint=0;i<5;i++) 
{ 
    clip = new YourClip(); 
    addChild(clip); 
    clip.x = 20 + clip.width * i * 1.2; 
    clip.y = 20; 
}