在音乐设置错误中展开菜单(movieclip)和音乐

时间:2017-11-08 16:28:50

标签: actionscript-3 flash

我在Flash中制作了一个可以展开的菜单,里面有音乐设置。

应用程序启动时播放音乐。要停止播放音乐,您必须展开菜单并单击音乐图标。

  • 打开程序并停止播放音乐后,它正常工作。
  • 如果我想再玩一次,那就好了。

但之后出现了问题:
我无法再次停止播放音乐,而且音乐在背景中播放了两倍。

这是我的FLA文件:

https://drive.google.com/file/d/1DpqdH64kDnI8xN6fBAt3pwi_bIRQ52mT/view?usp=drivesdk

有人能告诉我程序的错吗?感谢。

1 个答案:

答案 0 :(得分:0)

关于"音乐播放双重" 您的(音频)播放功能是否会创建new任何内容?(例如:= new Sound= new SoundChannel)?如果是的话......

  • 在功能之外创建音频变量,然后使用功能停止/开始音频播放。

  • 仅在加载新曲目时使用new Sound,一旦加载,然后使用一个SoundChannel播放/停止该Sound对象。

  • 您需要Boolean来跟踪Sound是否已播放。如果true,则不发送另一个.play()命令(现在为输出/发言人提供两种声音)。

查看下面的代码逻辑是否指导您进行更好的设置:

//# declare variables globally (not trapped inside some function)
var snd_Obj :Sound;
var snd_Chann :SoundChannel = new SoundChannel();

var snd_isPlaying :Boolean = false;

//# main app code
loadTrack("someSong.mp3"); //run a function, using "filename" as input parameter


//# supporting functions
function loadTrack (input_filename :String) : void 
{ 
    snd_Obj = new Sound(); 
    snd_Obj.addEventListener(Event.COMPLETE, finished_LoadTrack);
    snd_Obj.load( input_filename ); //read from function's input parameter
}

function finished_LoadTrack (event:Event) : void 
{ 
    snd_Chann = snd_Obj.play(); //# Play returned Speech convert result
    snd_Obj.removeEventListener(Event.COMPLETE, onSoundLoaded);

    //# now make your Play and Stop buttons active
    btn_play.addEventListener(MouseEvent.CLICK, play_Track);
    btn_stop.addEventListener(MouseEvent.CLICK, stop_Track);

}

function play_Track (event:Event) : void 
{ 
    //# responds to click of Play button 

    if(snd_isPlaying != true) //# check if NOT TRUE, only then start playback
    { 
        snd_Chann = snd_Obj.play(); 
        snd_isPlaying = true; //# now set TRUE to avoid multiple "Play" commands at once
    }
}

function stop_Track (event:Event) : void 
{
    //# responds to click of Play button 
    snd_Chann.stop();
    snd_isPlaying = false; //# now set FALSE to reset for next Play check
}