我们在ActionScript 3中开发了一款Flash游戏,它在我们的远程服务器上运行速度要慢得多。Flash游戏计时器时间间隔变为一半
游戏规格:
- 6-8不同的电影剪辑,从屏幕上的那些管委会的10至60的实例在任何给定的时间 所有1帧静态PNG文件,从10×10 100×100
- 任何地方
- 事件循环从闪存定时器在25ms的
- 运行所有的交互是通过键盘
奇怪薄g是,我们发布swf文件并在本地运行,一切都很快。我们将swf复制到远程服务器,一切运行速度更慢。音乐以正常速度播放,但动画片段都以大约一半的速度在屏幕上移动。
从远程服务器获取文件时为什么文件运行不同?不是swf总是在本地运行吗?另外,我们在任务管理器运行的情况下在本地和远程运行它,它似乎并不占用太多的CPU或内存。
编辑:好的,这真的很奇怪。我在游戏中添加了一个framecounter文本框。它报告自上次计时器打勾后的毫秒数。它始终如一地报告50ms。我的计时器显然设置为25.这解释了半速,但是解释了这一点?我还在timerInterval属性上添加了一个检查,以查看它是否已经更改并且没有;游戏运行时它仍然设置为25。
DOUBLE EDIT !:我发现这篇文章:http://www.bit-101.com/blog/?p=910,并切换我的代码使用ENTER_FRAME而不是定时器,它的工作原理。我得到全部40fps,给出或拿几%。仍然不确定定时器有什么问题;如果它在我的循环中花费的时间被延迟,它会波动,但它不会。无论发生多少事,每次都是50ms。
下面是我使用的是(或多或少)代码:
t = new Timer(25);
t.addEventListener(TimerEvent.TIMER, timerTick);
t.start();
,并在计时器滴答代码,我使用getTimer()时钟刻度之间的时间。每次出现50ms。
你尝试了您的计时器一点点。尝试100毫秒,如果事件还在继续,它会有另一个勾号,它应该跳过。 – 2011-10-17 15:57:45