FLASH AS3声音重叠

问题描述:

好的,我是一个总闪光as3 noob,所以这一定很容易解决我猜。我正在用闪存cs6制作一个带有录制声音的音板,非常简单:1个画面,10个按钮,每个按钮都会发出不同的声音。问题是这些声音重叠,所以我需要的是当我按下一个按钮时,其他声音停止播放。有人请吗?FLASH AS3声音重叠

请参阅Sound类中的play()方法文档,它将返回一个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(); 
} 

更详细的描述:

比方说,你想创建另一个闪光灯屁按钮的应用程序。这就是你必须做的:

  1. 创建一个按钮符号,将它添加到舞台并在属性选项卡中给它一个实例名称。我们称之为myButton
  2. 使用file-> import将声音添加到库中
  3. 将此声音导出到actionscript。右键单击库中的声音,在“actionscript选项卡”上选中“导出为动作脚本”,“在帧1中导出”。填充“Class”输入,并输入声音所需的类名(例如MySound)
  4. 然后,您必须触发单击按钮上的声音播放。所以,你应该把下面的代码到你的flash影片的第一帧:

    SoundMixer.stopAll(); 
    

    如果你是:

    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); 
    
+0

嘿男人谢谢你的回答。我真的不知道你的意思,所以我们说只有一个按钮。你能告诉我该做什么吗?每当我点击按钮声音重新开始但没有重叠时,我在哪里放这个代码。 – AdamXpelled

+0

好的。我会以更详细的方式重写它。 – leetwinski

+0

我跟着步骤,但无济于事。按钮现在被称为“myButton”,并且声音的类(名称为“goodmorning”)被称为“MySound”,因此我可以粘贴代码而不做任何更改,但不起作用。每次我点击一个新的声音来。告诉我,在AS2中更容易吗?也许我可以重新开始。我感谢你的帮助兄弟。 – AdamXpelled

播放声音之前,这对每个按钮的代码添加直接从Adobe Flash中的时间线添加动作,不需要导入类。如果你从一个IDE工作像的FlashDevelopFlashBuilder,该代码添加到开始(Package {后):

import flash.media.SoundMixer; 

编码愉快!

编辑:More info on the SoundMixer class

+0

它解决PO问题,但通过提供潜在的另一个问题。投票下来。 SoundMixer.stopAll();将停止当前播放的任何声音,而不仅仅是问题中提到的声音。如果PO后来需要背景音乐呢?或者如果其他声音应该在其他地方播放?这里提供的解决方案会产生比解决问题更多的问题。 – BotMaster

+0

知道这不是一个坏的功能。我已经建议了比这更深入的东西(比如将按钮声音存储到变量并在播放下一个声音之前停止当前声音)。 但是,OP公布他们是一个noob,我怀疑他们正在添加背景音乐。对于不知道或想要编码的人来说,这是一个快速解决方案。 –