CS5中ActionScript 3的问题
嗨,我正在制作一个简单的菜单(我知道它很简单,但是我的as3技能还不是那么“高级”)和一个带有声音选项的简单选项菜单,您唯一可以做的就是将音乐从1更改为3,但是,我的问题从这里开始。
我想让按钮彼此交互,每当按下按钮1时,BGM1Sound就会播放,并且如果在按钮1之前按下按钮2或3,这些按钮上的歌曲将会停止。
但。
没用
我试图通过SoundChannel进行传播,并试图使其仅作为BGM1.stop();。 ;甚至转为 bool(boolean) 值,但我只是绕圈运行,因为它要么行不通,要么会出现错误-那是1120,这是 bool(boolean) 值和SoundChannels的未定义属性的常用值(我认为我会得到,但值得一试)。
当然,音乐加载工作正常,但是如上所述,问题是当按下另一个按钮时,音乐无法停止。
这是代码,仅带按钮并分配给相应的BGM声音:
stop();
import flash.events.MouseEvent;
import flash.media.SoundChannel;
import flash.media.Sound;
import PffLib_fla.MainTimeline;
var BGM1ON:Boolean=false;
var BGM2ON:Boolean=false;
var BGM3ON:Boolean=false;
var BGM1Channel:SoundChannel=new SoundChannel();
var BGM2Channel:SoundChannel=new SoundChannel();
var BGM3Channel:SoundChannel=new SoundChannel();
BGM1Btn.addEventListener(MouseEvent.CLICK,handler3);
BGM2Btn.addEventListener(MouseEvent.CLICK,handler3);
BGM3Btn.addEventListener(MouseEvent.CLICK,handler3);
MainMenuBtn2.addEventListener(MouseEvent.CLICK,handler3);
function handler3(CLICKEvent3:MouseEvent):void{
if(CLICKEvent3.target==MainMenuBtn2){
gotoAndStop("MainMenu");
}
if(CLICKEvent3.target==BGM1Btn){
BGM2Channel=BGM2Sound.stop();//just going to write those channels here for a reference of what I was doing, but basically, each button had channels referring to each sound, and the idea was to stop the sound not loaded by respective button when clicked//
BGM3Channel=BGM3Sound.stop();
var SoundRequest1:Sound=new Sound();
SoundRequest1.addEventListener(Event.COMPLETE,onSoundLoaded1);
var Request1:URLRequest=new URLRequest("audio/BGM1.mp3");
SoundRequest1.load(Request1);
function onSoundLoaded1(SoundRequestEvent1:Event):void{
var BGM1Sound:Sound=SoundRequestEvent1.target as Sound;
BGM1Sound.play(0,1);
BGM1ON=true;
}
}
if(CLICKEvent3.target==BGM2Btn){
var SoundRequest2:Sound=new Sound();
SoundRequest2.addEventListener(Event.COMPLETE,onSoundLoaded2);
var Request2:URLRequest=new URLRequest("audio/BGM2.mp3");
SoundRequest2.load(Request2);
function onSoundLoaded2(SoundRequestEvent2:Event):void{
var BGM2Sound:Sound=SoundRequestEvent2.target as Sound;
BGM2Sound.play(0,1);
BGM2ON=true;
}
}
if(CLICKEvent3.target==BGM3Btn){
var SoundRequest3:Sound=new Sound();
SoundRequest3.addEventListener(Event.COMPLETE,onSoundLoaded3);
var Request3:URLRequest=new URLRequest("audio/BGM3.mp3");
SoundRequest3.load(Request3);
function onSoundLoaded3(SoundRequestEvent3:Event):void{
var BGM3Sound:Sound=SoundRequestEvent3.target as Sound;
BGM3Sound.play(0,1);
BGM3ON=true;
}
}
}
当我变得烦躁(╯°□°)╯︵┻━┻只是想了解这里的问题以及如何解决这个问题时,我希望有人能帮助我,不过Google叔叔对我没有任何好的答案;因此这个职位。
请帮帮我,谢谢(シ_ _)シ
最佳答案
您可能要 checkout SoundChannel reference。它有一个如何使按钮播放和停止声音的示例。
从您发布的代码来看,您似乎在使用SoundChannel错误。
播放声音时,您应该将其分配给该声道,然后在该声道上叫停。
所以像:
bgmChannel = bgm1Sound.play(0,1);
开始在声音通道中播放
bgm1Sound
。当您想停止在通道中播放声音时,只需调用
bgmChannel.stop();
即可。它将停止该 channel 中正在播放的任何声音。如果您一次只播放一种声音,则只需要一个声音通道,而不是三个。每次启动新声音时,将其分配到您的 channel ,然后在该 channel 上调用
stop()
停止声音。