- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我当前正在编写一个小游戏,其中涉及一个正在动态创建的音乐的播放,并以特定的音调调用一个函数来更新游戏。
使用SampleDataEvent.SAMPLE_DATA
或美妙的 standingwave2 lib动态创建音乐时,我没有问题,但是我找不到如何使声音与代码同步的方法。
我知道“同步”音符每X毫秒播放一次(假设是500毫秒),因此我尝试启动一个计时器,该计时器在开始发出声音后每500毫秒自动滴答一次,但最终不同步。我不确定计时器是否还不够好以致无法顺从
我知道有一种方法可以将音乐放在Adobe IDE框架上,以“流”的形式播放声音,然后在每个框架上放置一些代码,这样我就可以知道它的调用位置,但是我不能以这种方式动态创建音乐。
那么,有谁知道将我的函数调用与正在创建的声音同步的方法吗?
最佳答案
我认为这取决于音乐产生的时间和方式。如果要在运行游戏之前生成该音乐,则可以在该音乐中生成特定音调时在该音乐中生成时间偏移列表,然后根据这些值制作一个排序的数组,然后在音乐开始播放时,您将使用flash.utils.getTimer()值并将其存储为基准时间。此后,您将检查每个帧的当前getTimer()值是否大于当前数组位置,如果是,则调用所需的函数,并在数组中前进一个位置,为下一次发生预设做好准备您想要的语气。
另一方面,如果您要动态生成音乐,每个音乐要经过几帧,那么您必须在游戏开始时锁定getTimer()值,并且(应该)在音乐生成时锁定,以便每对值放到sampleData中的时间恰好是播放音乐的1/44100秒。然后,您可以对这些对进行计数(当然是在运行中),直到需要将所需的音调插入到生成的音乐中为止,然后才能从声音开始偏移。将其转换为毫秒,然后检查每帧是否当前的getTimer()减去存储的滴答计数大于或等于发现的偏移量,如果为true,则调用该函数。
关于actionscript-3 - 同步AS3中的动态音频和代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12707130/
我是一名优秀的程序员,十分优秀!