Flash AS3 - 得分计数器

时间:2012-02-07 17:05:58

标签: flash actionscript-3 frame counter

显然有很多关于得分计数器的帖子,我有一个更新每一帧(Enter_frame函数)的计数器,它工作正常。得分变量每帧增加,因此文本字段改变以显示得分。

我的问题是在iOS上它会让应用程序出现一些严重的帧速率问题,当我启用得分自动收报机时,我说的是5-10 fps的下降,这是非常恶劣的等等。我只是想知道是否有一些解决这个问题,我认为这是因为它必须每帧都更新并重新绘制文本字段,但我无法看到解决方法。

欢迎任何建议,

谢谢!

2 个答案:

答案 0 :(得分:1)

使用具有不透明背景的TextField或更改为位图字体可能有助于提高性能。

例如,您可以提前创建单独的位图图像,或者在运行时,您可以使用bitmapData.draw为您需要的每个数字生成单独的BitmapData实例。然后,您可以交换位图以显示正确的分数。

您可能还会考虑将来使用NME,这与Flash非常相似,但是比移动平台的Adobe AIR快3到9倍。例如,Iain Lobb的BunnyMark基准可以在iPhone 4上使用Adobe AIR以16 FPS渲染500个兔子,旋转和alpha .NME在同一设备上以30 FPS渲染4750个兔子。

这就是我用来避免性能问题的方法

http://www.haxenme.org

答案 1 :(得分:0)

您应该将分数重新定义为时间的函数。

score = t / 100; //where t is in milliseconds

在游戏开始时,初始化一个计时器变量;

var start:Number = getTimer();

然后在你的ENTER_FRAME听众中,根据实际时间计算分数,而不是帧数:

score = (getTimer() - s) / 100;

这是一种独立于表现的方式,可以按时完成分数。