ActionScripts 3 如何 replace/swap 舞台内的图像?

ActionScripts 3 How to replace/swap an image inside a stage?

我在 Animate CC 的舞台上有一些 PNG 图像,如何 change/swap 一个图像与另一个 PNG 一起使用代码导入到库中?

要从库中添加图像,您需要为该图像设置 AS3 class(设为 image.flame),然后

import image.flame;
import flash.display.Bitmap;
import flash.display.BitmapData;

var aRaster:BitmapData = new image.flame();
var aBitmap:Bitmap = new Bitmap(aRaster);

aBitmap.name = "Flame";
addChild(aBitmap);

删除可能有点棘手。

1) 如果 Animate CC 允许命名位图实例,那么您很幸运,可以直接命名它(例如 Flame),然后:

removeChild(getChildByName("Flame"));

1.1) 您还可以用 MovieClip 包装该位图并为其指定一个适当的名称。我认为这是最靠谱的方法。

2) 如果 Animate CC 不允许命名位图,就像我的 CS6 不允许,那么你只有几个选择。

2.1) 如果您的位图是其容器中唯一的 child,只需使用

将其删除
removeChildAt(0);

2.2) 如果是其他一些内容中唯一的位图,可以找到并删除:

for (var i:int = 0; i < numChildren; i ++)
{
    var aChild:Bitmap = getChildAt(i) as Bitmap;

    if (aChild)
    {
        removeChild(aChild);
        break;
    }
}

2.3) 如果该位图是众多位图之一,并且此容器中还有其他内容,那么...猜测其深度并 removeChildAt(...) 它,或选择选项 #1.1 并用 MovieClip 包装该位图,使其具有实例名称并可用于删除。

P.S。顺便提一下,在 CS6 之前,我记得 Flash 将位图 (Bitmap class) 转换为 bitmap-filled 形状 (Shape class),所以 #1.1 无论如何都是你最好的朋友。