好吧,我是flash中的总菜鸟,因此我想这一定很容易解决。我在flash cs6中制作带有录制声音的音板,非常简单:1帧,10个按钮,每个按钮发出不同的声音。问题是这些声音的重叠,所以我需要的是,当我按下一个按钮时,其他声音停止播放。有人请吗?
答案 0 :(得分:0)
请参阅play()
类中的Sound
方法文档,它会返回一个SoundChannel
对象,该对象具有stop()
方法。
所以你可以这样做(示意性地):
var currentChannel:SoundChannel;
button1.addEventListener(MouseEvent.CLICK, onButtonClick);
button2.addEventListener(MouseEvent.CLICK, onButtonClick);
button3.addEventListener(MouseEvent.CLICK, onButtonClick);
function onButtonClick(event:MouseEvent):void
{
/* provided you have implemented selectSoundByButton func somewhere */
const sound:Sound = selectSoundByButton(event.currentTarget);
if (currentChannel) {
currentChannel.stop();
}
currentChannel = sound.play();
}
更详细的说明:
假设你想在flash中创建另一个放屁按钮应用程序。这就是你要做的事情:
然后您必须在按钮点击时触发声音播放。因此,您应将以下代码放入Flash剪辑的第一帧:
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.MouseEvent;
var currentChannel:SoundChannel;
const mySound:Sound = new MySound();
function onClick(e:MouseEvent):void {
if (currentChannel) {
currentChannel.stop();
}
currentChannel = mySound.play();
}
myButton.addEventListener(MouseEvent.CLICK, onClick);
答案 1 :(得分:-1)
在播放声音之前,将其添加到每个按钮的代码中:
SoundMixer.stopAll();
如果您直接从Adobe Flash中的时间轴添加操作,则无需导入该类。如果您使用的是 FlashDevelop 或 FlashBuilder 等IDE,请将此代码添加到开头(Package {
之后):
import flash.media.SoundMixer;
快乐的编码!