好的,所以,这是这笔交易:我正在进行一个问答游戏,我决定给它配一个配乐。它是一个单一的音频文件,我上传到我的自定义域并通过代码流式传输。我还添加了播放/暂停按钮,这样播放器显然可以播放和暂停音乐。音乐在第1帧自动播放,其中"开始"我的游戏按钮是。但是,如果玩家回答错误的问题,他会回到第一帧。问题是另一个"实例"音乐开始播放,导致同时播放2首音乐。如果他再次回答错误,将有三个音乐播放,依此类推......我需要某种事件监听器来防止这种情况发生......正如你所看到的,我已经尝试过使用布尔方法,但它没有& #39;工作...... 这是我用于流媒体的代码:
var mySound:Sound = new Sound();
var myChannel:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;// pause button
mySound.load(new URLRequest("http://trollfacequiz.16mb.com/MusicFiles/Goat%20Songs.mp3"));
var soundIsPlaying:Boolean = false;
//mySound.play();
myChannel = mySound.play();
btn_mute.pause_btn.addEventListener(MouseEvent.CLICK, onClickPause);
function onClickPause(e:MouseEvent):void
{
lastPosition = myChannel.position;
myChannel.stop();
soundIsPlaying = false;
}
btn_mute.play_btn.addEventListener(MouseEvent.CLICK, onClickPlay);
function onClickPlay(e:MouseEvent):void
{
if (soundIsPlaying == false)
{
myChannel = mySound.play(lastPosition);
soundIsPlaying = true;
}
}
btn_mute是一个包含播放和暂停按钮的影片剪辑元件。 btn_pause是暂停按钮。 btn_play显然是播放按钮。 暂停按钮位于播放按钮的顶部,因此当它变为不可见时,它变为"播放按钮......
答案 0 :(得分:0)
我认为主要问题在于您的代码结构并将代码置于框架中,解决问题的最简单方法是使用SoundMixer.stopAll();
var mySound:Sound = new Sound();
var myChannel:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;// pause button
mySound.load(new URLRequest("http://trollfacequiz.16mb.com/MusicFiles/Goat%20Songs.mp3"));
var soundIsPlaying:Boolean = false;
//mySound.play();
SoundMixer.stopAll();
myChannel = mySound.play();
btn_mute.pause_btn.addEventListener(MouseEvent.CLICK, onClickPause);
function onClickPause(e:MouseEvent):void
{
lastPosition = myChannel.position;
myChannel.stop();
soundIsPlaying = false;
}
btn_mute.play_btn.addEventListener(MouseEvent.CLICK, onClickPlay);
function onClickPlay(e:MouseEvent):void
{
if (soundIsPlaying == false)
{
myChannel = mySound.play(lastPosition);
soundIsPlaying = true;
}
}