Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash流媒体音频问题:仅在帧更改时音频播放多次_Flash_Audio_Streaming_Playback_Overlapping - Fatal编程技术网

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

Flash流媒体音频问题:仅在帧更改时音频播放多次,flash,audio,streaming,playback,overlapping,Flash,Audio,Streaming,Playback,Overlapping,好吧,那么,事情是这样的:我正在做一个智力竞赛游戏,我决定给它放一个配乐。这是一个单一的音频文件,我上传到我的自定义域,并通过代码流。我还添加了播放/暂停按钮,以便播放器可以播放和暂停音乐。音乐自动播放在第1帧,我的游戏的“开始”按钮在那里。然而,如果玩家回答了一个错误的问题,他会回到第一帧。问题是音乐的另一个“实例”开始播放,导致两个音乐同时播放。如果他再次答错,将有三个音乐播放,以此类推。。。。我需要某种事件监听器来防止这种情况发生。。。正如你所看到的,我已经尝试使用布尔方法,但它不起作用。

好吧,那么,事情是这样的:我正在做一个智力竞赛游戏,我决定给它放一个配乐。这是一个单一的音频文件,我上传到我的自定义域,并通过代码流。我还添加了播放/暂停按钮,以便播放器可以播放和暂停音乐。音乐自动播放在第1帧,我的游戏的“开始”按钮在那里。然而,如果玩家回答了一个错误的问题,他会回到第一帧。问题是音乐的另一个“实例”开始播放,导致两个音乐同时播放。如果他再次答错,将有三个音乐播放,以此类推。。。。我需要某种事件监听器来防止这种情况发生。。。正如你所看到的,我已经尝试使用布尔方法,但它不起作用。。。 以下是我用于流媒体的代码:

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

我认为主要问题在于代码结构和将代码放入帧中,解决问题的最短方法是使用SoundMixer.stopAll()


谢谢,我只是有一个问题:为什么soundMixer.stopAll不能“重置”声音?因为如果输入帧,声音混合器会停止所有SOND,然后myChannel=mySound.play()播放它,理论上会重置声音…你的意思是在回答错误的情况下,声音会从最后一个位置继续播放??也许它可以帮助我的声音。播放(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;
    }
}