2012-10-31 77 views
3

我在Flash中创建了几个按钮。我试图做到这一点,如果你点击一个按钮,音频开始播放该按钮。如果您单击另一个按钮,则活动音频会停止,并且您最后单击的按钮的新音频开始播放。Actionscript在不同按钮上播放/暂停音频

请帮忙吗?

回答

2

你所描述的实际上很容易做到。

首先,我建议将音频导入到您的Flash项目中。或者,有一种方法可以直接从外部文件播放它。这超出了我的答案范围,所以如果你需要帮助,你应该发布一个专门涉及它的问题。

假设您已经将音频文件导入到Flash项目的库中,请为其创建一个as3实例。 (右键单击库中的文件,单击属性 - > ActionScript [选项卡] - > [检查]导出为动作脚本& [输入名称类]

现在,在代码中创建声音的定义。 (假设你的两个声音是在上一步中的类字段名为“mySound1”和“mySound2”。)

var mySound1:Sound = new mySound1(); 
var mySound2:Sound = new mySound2(); 

现在,定义声道。

var mySoundChannel:SoundChannel = new SoundChannel(); 

有两种替代方法可以阻止一种声音并播放另一种声音。首先是创建一个每次都能执行的函数。第二种方法是创建两个公式,一个用于“play”,一个用于“stop”。您需要决定哪种方法最适合您。我将使用双功能的方法如下:

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); 
} 

[注意,你可以调整播放()属性来满足您的需求,做这样的事情开始在歌曲的中间,或无休止的循环下去吧。 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语句,因为如果你传递一个不存在的声音的名字,它会抛出一个引用错误。

+0

非常感谢你的帮助,但这听起来很疯狂,因为即时通讯使用闪光灯,有点混淆,因为如何做到上述步骤,听起来很直截了当,是否有可能我可以打电话给我你或teamviewer进入我的电脑,并告诉我如何做一个按钮?请告知或者直接给我一步一步地点击什么 –

+0

不幸的是,直到今天晚些时候我才会回来。然而,在这种情况下,我会非常乐于提供帮助(因为StackOverflow不是教Flash基础的最佳场所)。通过我的博客联系表单(www.indeliblebluepen.com)给我留言,我会看看我能否给你更详细的演练和一些资源。大约一年前我曾穿着鞋子,所以我可以说。 – CodeMouse92

+0

非常感谢你 –

相关问题