2011-08-12 84 views
0

我以前问过关于游戏AS3和时间的问题,但没有得到答案,所以试图让问题更加精确。最好的方式来计时游戏

我正在制作类似于东方风格的游戏来学习AS3,但是这个游戏是按照音乐定时的。子弹模式,敌人产卵和特殊图形都将在音乐中的特定时间发生。我想知道的是:

什么是准确计时的许多(!)事件的最佳方式,要求它们非常准确,而且即使稍微不同步也不会滑倒?的

例什么时机种类我要找: 小号 菌种在1:30分钟5种不同类型的敌人年代,敌人在1:31 1发子弹模式开始,子弹模式将被定时击败这样的重复图案中的每个2秒。这是我想要得到的一个简单和简短的例子。

回答

0

对于对象和动画时间,你应该听ENTER_FRAME事件,然后获取当前时间在毫秒:

var now:Date = new Date(); 
var timeInMilis:int = now.getTime(); 

,并检查是否有物体需要移动,添加等基于该时间。

至于声音计时,您可能会在ENTER_FRAME事件期间正常播放声音。但是,闪存很容易给声音添加延迟,这意味着在你调用.play()之后,它们不会总是立即播放(不会太多,以毫秒为单位)。如果您需要超级精确的时序,则可能需要使用herehere中描述的技术来实现您自己的混音器。

祝你好运!

+0

这很有效,非常感谢。但是现在我有一个控制时间表的问题。我打算这样做的方式是,当到达特定情况时(例如特定秒),它会在离开时运行30次,而我只希望它运行一次。无论如何要解决这个问题吗?或者其他方式来制作时间表? – Babyrat

+0

将案件标记为“触发”或在您运行后发生了某些事情,以便您知道哪些内容可以跳过。 – kolufild