То, что я пытаюсь сделать, это зациклить звук при событии мыши вниз, а затем при событии мыши вверх, я хочу завершить любую итерацию и остановить цикл.
Эта логика ниже должна работать, но я понятия не имею, почему это не так.
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.events.Event;
import flash.media.SoundChannel;
//ExplosionSound is .wav file linked in my library.
var s:Sound=new ExplosionSound();
var sc:SoundChannel = new SoundChannel();
stage.addEventListener(MouseEvent.MOUSE_DOWN, loopSound);
stage.addEventListener(MouseEvent.MOUSE_UP, stopLoop);
function loopSound(e:MouseEvent):void {
sc=s.play(0,9999);
}
function stopLoop(e:MouseEvent):void {
sc.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
}
function soundCompleteHandler(e:Event):void{
sc.removeEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
sc.stop();
}
Я мог бы просто поставить sc.stop (); в моей функции stopLoop (), но это немедленно останавливает звук.
Мне, например, нужно: скажем, у вас стреляет из пулемета, и когда вы прекращаете стрелять, последний звук пули не прекращается сразу, он заканчивается.
Надеюсь, это имеет смысл.
Спасибо за вашу помощь.