【问题标题】:Create a copy of existing movieclip in AS3在 AS3 中创建现有影片剪辑的副本
【发布时间】:2015-08-29 13:20:46
【问题描述】:

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

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

但它会创建原始卡片的新实例,而不是其中包含位图的实例。

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

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

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

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

    看起来您有一个名为“卡片”的链接类。您可以简单地实例化该类以再次生成影片剪辑。即。

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

    【讨论】:

    • 是的,看起来不错,谢谢,但问题是每次卡片翻转时我都需要创建一个新的位图。我想做的是为卡片创建一次位图(52张卡片+背面),然后重复使用这些位图,我不想每次翻转卡片一次又一次地绘制。
    • 然后您需要创建一个位图数据实例数组。然后你可以交换每个位图的位图数据。例如,使用上述实现,以及一个 BitmapData 数组,someCardBitmap.bitmapData = arrayOfBitmapData[ index ]
    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2015-12-27
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多