在AS3中创建现有动画片段的副本

时间:2015-08-29 13:20:46

标签: actionscript-3 flash

我有一个图库movieclip:Cards。在牌上,每一帧都是牌(矢量)(例如第1帧:俱乐部王牌,第2帧:俱乐部2等)。 我创建了一个新的卡片实例并将每个帧转换为位图(所以现在第1帧的俱乐部Ace是位图),现在我希望舞台上的每张卡片(我将添加)都是转换对象的副本。 / p>

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);

但是它会创建一个新的原始卡片实例,而不是带有位图的卡片。

如何使用已修改的卡片动画片段(带有位图的卡片)将其分配给我添加到舞台的每张新卡?

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

  

如何使用已修改的卡片动画片段(带有位图的卡片)将其分配给我添加到舞台的每张新卡?

看起来你有一个名为" Cards"的链接类。您只需实例化该类即可再次生成movieclip。即

var newCard:Card = new Card();

之前您在此处设置了一个新的MovieClip到已经实例化的卡类:

newCard = cachedCard;

但是,如果您的Card movieclip在显示卡信息的每个帧上都有位图,您还可以创建每张卡的位图,如下所示:

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 );
}