2015-08-29 71 views
0

我有一個圖書館動畫片段:卡片。在牌上,每一幀都是一張牌(矢量)(例如,第1幀:俱樂部Ace,第2幀:俱樂部2等)。 我創建了卡片的一個新實例並將每個幀轉換爲位圖(所以現在第1幀上的俱樂部Ace是位圖),現在我希望舞臺上的每張卡片(我將添加)作爲轉換對象的副本。在AS3中創建現有動畫片段的副本

var cachedCard:Cards = new Cards(); 
// [...] for every frame convert that frame to bitmap, remove original children and add bitmap instead 
var newCard:MovieClip = new MovieClip(); 
newCard = cachedCard; 
// I understand that this is not working, 
// a similar example would be with arrays, array1 = array2, 
// array1 is just another name for array2, 
// but you can use array1.concat(array2) and now array1 is separated from array2 
// Can I do something similar with movieclips ?! 

我已經嘗試過這樣的解決方案: AS3 clone MovieClip

我嘗試這樣做:

function copyClip(clip:MovieClip) 
{ 
    var sourceClass:Class = Object(clip).constructor; 
    var duplicate:MovieClip = new sourceClass(); 
    return duplicate; 
} 

var card:MovieClip = new MovieClip(); 
card = copyClip(cachedCard); 

,但它創造原卡,而不是一個與它的位圖的新實例。

如何使用修改後的卡片動畫片段(帶有位圖的卡片)將其分配給每個添加到舞臺的新卡片?

任何幫助將不勝感激。謝謝

回答

0

如何使用修改後的卡片movieclip(帶位圖的卡片)將其分配給我添加到舞臺的每張新卡?

它看起來像你有一個名爲「卡」的鏈接類。您可以簡單地實例化該類以再次生成動畫片段。 IE瀏覽器。

var newCard:Card = new Card(); 

之前你設定新的MovieClip到已經實例卡類在這裏:

newCard = cachedCard; 

但是,如果你的卡動畫片段每一幀的位圖,顯示卡的信息,你也可以創建每張卡片的位圖,如下所示:

public function createCard(frame:int):Bitmap 
{ 
    cachedCard.gotoAndStop(frame); 

    var cardBitmapData:BitmapData = new BitmapData(cachedCard.width, cachedCard.height, true, 0); 
    cardBitmapData.draw(cachedCard); 

    return new Bitmap(cardBitmapData); 
} 
+0

是的,似乎是正確的,謝謝,但問題是我需要創建一個新的位圖每次卡翻轉。我想要做的是爲卡片創建一次位圖(52張卡片+背面),然後重新使用這個位圖,我不想一次又一次地爲每張卡片進行繪製。 – Stefan

+0

然後你會想創建一個位圖數據實例的數組。然後,您可以交換每個位圖的位圖數據。例如,使用上面的實現和一個BitmapData數組,'someCardBitmap.bitmapData = arrayOfBitmapData [index]' –

相關問題