Я пытаюсь синхронизировать анимацию с музыкой при определенном BPM. Я пробовал использовать таймер, но он неточен при работе с небольшими интервалами в миллисекундах. Я сделал некоторое чтение и нашел альтернативный метод, в котором используется небольшой тихий аудиофайл и событие SOUND_COMPLETE в качестве таймера.Точный прослушиватель событий BPM в AS3
Я использовал звуковой файл длиной 167мс с этим кодом.
package
{
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
public class BetterTimer extends EventDispatcher
{
private var silentSound:Sound;
public function BetterTimer(silentSoundUrl:String):void {
super();
silentSound = new Sound(new URLRequest(silentSoundUrl));
silentSound.addEventListener(Event.COMPLETE, start);
}
public function start():void {
this.timerFired(new Event("start"));
}
private function timerFired(e:Event):void {
dispatchEvent(new Event("fire"));
var channel:SoundChannel = silentSound.play();
channel.addEventListener(Event.SOUND_COMPLETE, timerFired, false, 0, true);
}
}
}
Это все еще не останавливается. Является ли Flash Player способным к точности со звуком?
Я только что дал этому BeatTimer попробовать. Это было написано, чтобы нанести удар по четверти ударам при определенном BPM. Я тестировал его с восьмым и шестнадцатым, и он остается точным в течение моей 2-минутной петли. Я также хотел бы попробовать решение Joa, но для моих целей этот BeatTimer работает хорошо. Благодарю. – knuckfubuck