我在Flash中创建了几个按钮。我正在努力使它如果你点击一个按钮,音频开始播放该按钮。如果单击另一个按钮,活动音频将停止,并且您上次单击的按钮的新音频将开始播放。
请帮忙吗?
答案 0 :(得分:2)
你所描述的实际上很容易做到。
首先,我建议将音频导入Flash项目。或者,有一种方法可以直接从外部文件播放它。这超出了我的答案的范围,所以如果你需要帮助,你应该发一个专门介绍它的问题。
假设您已将音频文件导入Flash项目的库中,请创建一个as3实例。 (右键单击库中的文件,单击属性 - > ActionScript [tab] - > [检查]导出for ActionScript& [输入名称]类)
现在,在代码中创建声音的定义。 (假设你的两个声音在上一步的Class字段中被命名为“mySound1”和“mySound2”。)
var mySound1:Sound = new mySound1();
var mySound2:Sound = new mySound2();
现在,定义你的声道。
var mySoundChannel:SoundChannel = new SoundChannel();
有两种方法可以停止一种声音并播放另一种声音。第一个是创建一个每次都执行的功能。第二种方法是创建两个公式,一个用于“播放”,一个用于“停止”。您需要确定哪种方法最适合您。我将使用下面的双功能方法:
function stopSound():void
{
//This stops all sound in the sound channel.
//If there is nothing playing, nothing happens.
mySoundChannel.stop();
}
//In this function, we create an argument that allows us to tell the function
//what sound to we want it to play.
function playSound(soundname:String):void
{
mySoundChannel = this[soundname].play(0, 0);
}
[注意,您可以调整play()属性以满足您的需求,例如从歌曲中间开始或永久循环播放。 0,0从头开始,不循环。请参阅documentation。]
现在,您可以连接按钮的事件侦听器。 (如果您需要有关事件监听器的帮助,请阅读documentation。)
myButton1.addEventListener(Mouse.CLICK, btn1Click);
myButton2.addEventListener(Mouse.CLICK, btn2Click);
function btn1Click(evt:Event):void
{
stopSound();
playSound(mySound1);
}
function btn2Click(evt:Event):void
{
stopSound();
playSound(mySound2);
}
这应该是足够的信息来帮助您入门。在我的游戏核心中,我实际上有一个自定义类来处理声音播放,这使我能够重复声音,改变音量,并保持声音不会相互冲突。我这样说是为了强调你可以在声音课上做很多事情。做一些挖掘documentation的想法和帮助。
您也可以考虑在playSound函数中添加try-catch语句,因为如果为不存在的声音传递名称,它将引发引用错误。