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

Air for Android: Animation causes lagging in my game

我正在为 android 在 cs6 air 中制作游戏。 当我为我的游戏制作动画时,我使用 3D 软件搅拌机。在搅拌机中,我制作了一个动画,然后将其渲染为一系列 PNG 图像,然后将其导入到 Flash CS6 中。 因此,如果我正在为我的角色制作步行动画,我会在搅拌机中制作大约 30 张 png 图像,然后将它们作为序列导入。这在大多数情况下工作得很好,但我制作的一些动画有问题。 例如,我有一个敌人爆炸的动画。所以在我的游戏中,有时会同时出现很多敌人,当我点击它们时它们会爆炸。但是爆炸动画让游戏很卡。

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

希望我说清楚了,在此先感谢!

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

这是从 mc 中创建位图的示例函数。代码显示用位图副本替换常规矢量 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 转换为位图后可以顺畅移动

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