Actionscript在不同的按钮上播放/暂停音频

时间:2012-10-31 15:26:45

标签: actionscript-3 flash actionscript-2

我在Flash中创建了几个按钮。我正在努力使它如果你点击一个按钮,音频开始播放该按钮。如果单击另一个按钮,活动音频将停止,并且您上次单击的按钮的新音频将开始播放。

请帮忙吗?

1 个答案:

答案 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语句,因为如果为不存在的声音传递名称,它将引发引用错误。