2012-01-15 51 views
1

我正在为基于节奏的游戏设置ActionScript中的特定歌曲,其中触发器会在屏幕的右侧产生并向左移动。玩家触摸屏幕左侧时必须触发触发器,并且试图找出最具代码效率的方式来产生与歌曲时间同步的触发器。立即想到的唯一的事情是一个更新函数绑定到主循环,检查每首歌曲是否在某一秒钟,但似乎没有必要。有任何想法吗?AS3应该如何在逻辑上组织节奏/时间?

回答

1

我认为最容易做到这一点有点准确是

1 /放的音乐成。FLV文件,并添加提示点吧。然后触发器可以同步到提示点。我的猜测是,你也必须稍微抵消它们,以符合你所看到的和你所听到的内容。它肯定会采取一些实验。 有了这个解决方案,但是您需要记住,根据D/L速率,文件的流可以交错,暂停等。

2 /另一种解决方案是将声音导入到一个movieclip作为流的时间轴,然后让上的相应帧它分派事件将它与触发器同步。我认为这将是最精确的解决方案。

试图通过代码完全做到这一点将不够准确,我认为,显然也取决于音乐。如果你使用的是电子音乐,节奏是机器的“完美”,但如果它是人造的,则会有微小的变化和“错误”,从而导致同步。不过,如果你希望走这条路,

3 /你需要分析是通过SoundMixer.computeSpectrum http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundMixer.html#computeSpectrum()

产生很明显这就是,如果你想成为那唯一有意义的解决方案中的数据能够更新歌曲。

虽然我没有很多这方面的经验,但也许有更好的解决方案。

+0

“computeSpectrum”的+1。类似的东西是可行的。困难,但可行。 – 2012-01-18 02:04:40

+0

感谢@Creynders,这是很棒的信息,我会尝试'computeSpectrum'。 – Jyakku 2012-01-19 18:36:40