【发布时间】:2011-05-10 19:01:44
【问题描述】:
我正在使用以下方法在 X 次/分钟内发送声音(X 是通过 bpm 确定的,它是一个 NumericStepper 对象)
var mainTimer:Timer = new Timer(60 / (bpm.value * 1000),0);
mainTimer.addEventListener(TimerEvent.TIMER, fl_TimerHandler,false, 0, true);
mainTimer.start();
function fl_TimerHandler(event:TimerEvent):void
{
metroTransform.volume = vol;
flash.media.SoundMixer.soundTransform = metroTransform;
metroChannel = metro.play();
mainTimer.delay = 60 / bpm.value * 1000;
}
根据这个http://www.metronomeonline.com/ 声音不是很好。有什么办法可以解决我遇到的这个问题吗?
我得到的输出文件的路径:http://conatur.net/metroBig.swf
【问题讨论】:
-
您是否尝试禁用音量转换?每次调用函数时,您都在调用 flash.media.SoundMixer,您应该创建一个对象并在函数外部实例化它,就像 metroTransform 一样。这里只是一个猜测,但如果您使用的帧速率非常低,可以尝试提高它。
-
这里有很多问题。第一个也是最致命的是 Flash 存在无法治愈的声音延迟问题,因此即使您的代码已经完善,您仍然无法确保声音完全按提示播放。 @Valkie 有你一半的答案,但另一半只是你永远无法真正“治愈”延迟问题的症状。
标签: flash actionscript-3 actionscript timer