Air for Android:动画导致我的游戏滞后

时间:2015-08-02 18:28:45

标签: animation air flash-cs6

我正在使用cs6 air制作游戏。 当我为我的游戏制作动画时,我使用的是3D软件搅拌机。在混合器中我制作动画,然后将其渲染为一系列PNG图像,我将其导入Flash CS6。 因此,如果我正在为我的角色制作一个步行动画,我会在混合器中制作大约30个png图像,并将它们作为序列导入。这在大多数时候都很好用,但我对我制作的一些动画有问题。 作为一个例子,我有一个爆炸的敌人的动画。所以在我的游戏中,有时会有很多敌人,当我点击它们时它们会爆炸。但爆炸动画让游戏变得非常迟钝。

问题: 有没有办法可以将png图像转换为其他东西,这不会滞后?我制作的大多数其他动画都没有落后。也许爆炸动画特别沉重,我不知道。我知道我可以在cs6中自己绘制动画,然后它不会滞后,但它需要花费很多时间,而不是看起来很酷。

我希望自己清楚明白,并提前感谢!

1 个答案:

答案 0 :(得分:1)

只使用位图 - 其他一切都必须离开舞台。位图使用gpu,其他一切都使用cpu。您可以使用任何内容创建常规mc,但将它们转换为位图。显示加载屏幕,将您的png文件加载到mc,将mc' s转换为位图,删除png文件,删除加载屏幕并运行。

这是用于创建mc' s中的位图的示例函数。代码显示用位图副本替换常规向量mc:

var bmpTemp: Bitmap;
bmpTemp = fDrawTile(mcVector, 0, 0, iWidth, iHeight);
mcHolder.mcBitmap.addChild(bmpTemp);
mcHolder.removeChild(mcHolder.mcVector);
mcHolder.mcVector = null;


function fDrawTile(pClip: MovieClip, pX: int, pY: int, pWidth: int, pHeight: int): Bitmap {
    trace("fDrawTile: " + pX + "," + pY + "  " + pWidth + "," + pHeight);
    var rectTemp: Rectangle = new Rectangle(pX, pY, pWidth, pHeight);
    var bdClip: BitmapData = new BitmapData(pWidth, pHeight, true, 0x00000000);
    var bdTemp: BitmapData = new BitmapData(pWidth, pHeight, true, 0x00000000);
    bdClip.draw(pClip, null, null, null, rectTemp, true);
    bdTemp.copyPixels(bdClip, rectTemp, new Point(0, 0));
    var bmpReturn: Bitmap = new Bitmap(bdTemp, "auto", true);
    return bmpReturn;
}

转换为位图后,mcHolder可以平滑移动。

此方法非常强大,因为您可以在运行时创建图像。