flash - Flash流音频问题:仅在更改帧时音频播放多次

标签 flash audio streaming playback overlapping

好的,这就是交易:我正在做一个问答游戏,我决定为其配乐。这是一个音频文件,我已将其上传到我的自定义域,并通过代码流式传输。我还添加了播放/暂停按钮,以便播放器可以播放和暂停音乐。音乐会在第1帧自动播放,这是我游戏的“开始”按钮所在的位置。但是,如果玩家回答错误的问题,他将返回第一帧。问题是音乐的另一个“实例”开始播放,导致同时播放2首音乐。如果他再次回答错误,将播放三首音乐,依此类推....我需要某种事件监听器,以防止这种情况发生...如您所见,我已经尝试过使用boolean方法,但是它没有不行...
这是我用于流式传输的代码:

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显然是播放按钮。
暂停按钮位于播放按钮的顶部,因此当它变得不可见时,它会“变成”播放按钮...

最佳答案

我认为主要问题在于您的代码结构和将代码放入框架中,而解决该问题的最短方法是使用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;
    }
}

关于flash - Flash流音频问题:仅在更改帧时音频播放多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26556827/

相关文章:

javascript - 从 javascript 或 ASP.Net 读取 Flash Cookie

jquery - Flash 视频仍在使用 jQuery 删除的 DIV 上播放(IE 错误)

asp.net - 从网页录制音频

apache-flex - 在具有调整大小功能的新 Air 窗口中加载外部 SWF 应用程序

audio - 如何在 Windows Vista 中以编程方式启动麦克风音量控制面板?

iphone - 停止 iPhone 中的声音

java - 如何在 C++ 或 C# 或 Java 中创建 jpegs(live) 流?实时传输协议(protocol)?

mongodb - 您可以从 GridFS(MongoDB 文件系统)流式传输视频吗?

java - 读取流数据的最佳编程方式

javascript - 当audioContext.destination在Web Audio API中不播放声音时如何监听