我正在开发一个基于节奏的游戏设置为ActionScript中的特定歌曲,其中触发器在屏幕右侧产生并向左移动。当玩家触摸屏幕的左侧时,玩家必须触发触发器,并且我正在尝试找出与歌曲的时间同步产生触发器的最有效编码方式。我唯一想到的是一个与主循环相关的更新功能,它检查歌曲是否在每帧的某一秒,但这似乎是不必要的。有什么想法吗?
答案 0 :(得分:1)
我认为最容易准确的做法是
1 /将音乐放入.flv文件并添加提示点。然后触发器可以同步到提示点。我的猜测是,你也必须稍微抵消它们以匹配你所看到的内容。这肯定需要一些实验。 但是,使用此解决方案时,您需要记住,文件的流式传输可以交错,暂停等,具体取决于D / L速率。
或
2 /另一种解决方案是将声音作为流导入到动画片段的时间轴中,然后让它在相应的帧上调度事件以使其与触发器同步。我认为这将是最精确的解决方案。
我认为,尝试通过代码完全执行此操作并不够准确,显然也取决于音乐。如果你正在使用电子音乐,那么节奏就是机器“完美”,但如果它是人造的,那么会有轻微的变化和“错误”,这会搞砸同步。但是如果你想沿着这条路走下去,
3 /您需要分析通过SoundMixer.computeSpectrum
生成的数据
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundMixer.html#computeSpectrum()
显然,如果您希望能够更新歌曲,这是唯一有意义的解决方案。
我对这些事情没有太多经验,也许有更好的解决方案。