首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快闪游戏计时器时间间隔改为一半

快闪游戏计时器时间间隔改为一半
EN

Stack Overflow用户
提问于 2011-10-17 13:06:11
回答 2查看 451关注 0票数 0

我们在actionscript 3中开发了一个闪存游戏,它在我们的远程服务器上运行得慢得多。

游戏规格:

100x100

  • anywhere
  • 6-8不同的电影剪辑,所有1帧静态png文件,从10x10到从10到60个在屏幕上的MCs在任何给定的时间,
    • 事件循环都是从一个闪存计时器在25 is
    • 上运行的所有交互是通过键盘

奇怪的是,我们发布swf文件并在本地运行,一切都很快。我们将swf复制到远程服务器上,一切运行都要慢得多。音乐以正常的速度播放,而电影则以大约一半的速度在屏幕上移动。

为什么从远程服务器获取文件时会以不同的方式运行?swf不是总是在本地运行吗?此外,在任务管理器运行时,我们在本地和远程运行它,并且它似乎消耗不了太多的CPU或内存。

编辑:好吧,这真的很奇怪。我在游戏中添加了一个更框架的文本框。它报告自上次计时器滴答以来的ms数。它一直报告50毫秒。我的计时器明显设置为25。这解释了一半的速度,但这是什么原因呢?我还在timer.Interval属性上添加了一个检查,看看它是否已经改变了,但没有改变;在游戏运行期间,它仍然设置为25。

我找到了这篇文章:http://www.bit-101.com/blog/?p=910,并将我的代码转换为使用ENTER_FRAME而不是计时器,它可以工作。我得到完整的40 few,给予或接受几%。但是,仍然不确定计时器出了什么问题;如果计时器被我的循环时间延迟了,它会波动,但不会。不管发生了多少,每次都是50毫秒。

下面是我使用的代码(或多或少):

代码语言:javascript
复制
t = new Timer(25);
t.addEventListener(TimerEvent.TIMER, timerTick);
t.start();

在计时器滴答码中,我使用getTimer()来计时滴答之间的时间。每次都能达到50毫秒。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-22 13:28:00

我以前在Timer类上遇到了一些问题,使用它来运行我的游戏循环。你的主权财富基金是什么?我发现其中两人是有联系的。

以前,我认为我可以使用SWF 2,同时设置定时器给我30 FPS。所发生的是,主权财富基金将框架滴答,它将检查计时器类。计时器可能会触发事件。然后,半秒后( SWF被设置为2 2FPS),SWF将再次勾选。Timer类然后尝试触发15个事件(Timer被设置为30 was )。同时,它可以同时触发的事件数量似乎也有限制,因为它一次只会发射其中的5个。

切换到ENTER_FRAME -它也允许您节流您的帧速率,如果您需要。

此外,如果您还没有使用它,学习使用增量时间来控制您的游戏对象的移动。

代码语言:javascript
复制
private var m_lastTime:int = 0;

private function _onEnterFrame( e:Event ):void
{
    var currTime:int        = getTimer();
    var deltaTime:Number    = ( currTime - this.m_lastTime ) * 0.001;
    this.m_lastTime         = currTime;

    // then, if you want your object to move at 10 pixels per second, it's:
    myObj.x += 10 * deltaTime;
}

然后,无论你的计算机的速度,你的对象将以恒定的速度移动。

如果你正在做一个物理游戏,那么你也需要考虑修正你的时间步骤,以获得更一致的结果:http://gafferongames.com/game-physics/fix-your-timestep/

奖金链接:http://www.8bitrocket.com/2008/04/08/tutorial-creating-an-optimized-as3-game-timer-loop/

票数 1
EN

Stack Overflow用户

发布于 2011-10-17 13:20:39

SWF总是在本地由播放器执行。我想到的可能不同之处是:

在本地使用桌面Flash,而不是plugin/activeX

  • the swf不在同一个页面中,在线版本可能包括其他闪存动画(Ads)
  • 在线
  • 页面将flash的wmode设置为透明,而本地
  • 则将其设置为

窗口

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7794183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档