2011-06-16 128 views
3

我有几个类。AS3.0播放声音没有延迟

我的文档类(Main.as)实例化类播放器和Soundsloader。 在玩家选择游戏中的物品时,我想播放短暂的声音。我用下面的代码做到这一点:MovieClip(this.main_object.sound_loader).playPickUp();

在我的文档类中,我还实例化了基本上应该加载所有声音的SoundsLoader。 (只有一个在我下面的示例代码)

package { 
    import flash.display.MovieClip; 

    public class SoundsLoader extends MovieClip{ 

     private var pick_up_item:sound_pickup_item = new sound_pickup_item; 

     public function SoundsLoader() { 
     } 

     public function playPickUp(){ 
      pick_up_item.play(); 
     } 
    } 
} 

然而,当我用我的swf文件短暂定格的方法,播放的声音,然后继续。那么做这件事的最好方法是什么? (我使用的是.wav的声音)

+0

有一个延迟,而使用MP3,之前和之后的声音。 我一直想解决这个问题。 即使使用as3wavsound类,在第一次播放声音时也会有延迟。 – 2smacks 2011-06-16 13:42:52

+0

这太奇怪了! – Tieme 2011-06-16 13:55:20

回答

3

如果这只发生在第一次播放声音,可能是由于解压缩问题。我放弃了下载延迟,因为你告诉你已经加载了所有的声音,在preloader或类似的东西。

就像我说的,如果这个只发生在第一次,解决方法是在预加载时播放所有声音,但是静音。

例子:

public function SoundsLoader() {    
    var songController:SoundChannel = pick_up_item.play();   
    var volControl:SoundTransform = songController.soundTransform; 
    volControl.volume = 0; 
    songController.soundTransform = volControl; 
} 

或者

public function SoundsLoader() {    
    var songController:SoundChannel = pick_up_item.play();   
    songController.stop; 
} 
+0

打他们静音,是一种丑陋的解决方案。我希望有人知道更好的解决方案。否则,我会标记你的最佳答案。 – Tieme 2011-06-16 13:59:25

+0

是的,这是一个丑陋的黑客。但试试它是否有效,这样可以缩小问题范围。 – Veehmot 2011-06-16 14:11:17

+0

是的,它的作品,我编辑你的文章,以防有人正在寻找正确的答案。 – Tieme 2011-06-19 16:58:55