我对动作脚本还很陌生,需要知道如何循环播放BG音乐。我知道您可以使用
之类的其他语言 while(!endGame){
sound.play();
}
但是我似乎找不到在AS中执行此操作的语法,或者也许有更好的方法?这是一个7秒的剪辑,所以我需要它继续循环播放直到满足最终条件。
答案 0 :(得分:2)
AS3提供了两种方法来处理此问题。最简单的方法是使用它的loops参数告诉play命令您希望声音重复播放的次数。 https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html#play()
第二种方法-为您提供更多控制-有点复杂。基本上,您是在开始声音并添加一个监听器,以监视声音的播放。如果完成播放 SOUND_COMPLETE 事件,则会触发该事件,并且其回调函数可以重新开始播放。 举个例子:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
public class Main extends Sprite
{
private var sound:Sound;
private var soundChannel:SoundChannel;
public function Main():void
{
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
sound = new Sound();
var urlRequest:URLRequest = new URLRequest("sound.mp3");
sound.load(urlRequest);
soundChannel = sound.play();
soundChannel.addEventListener(Event.SOUND_COMPLETE, soundFinished);
}
public function soundFinished(event:Event):void
{
soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundFinished);
soundChannel = sound.play();
soundChannel.addEventListener(Event.SOUND_COMPLETE, soundFinished);
}
}
}