AS3.0如何无延迟播放声音

3

我有几个类。

我的文档类(Main.as)实例化了player和Soundsloader类。在player类中,当玩家在游戏中拾取物品时,我想播放一个短暂的声音。我使用以下代码实现: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格式的声音)


使用mp3时,声音播放前后会有延迟。我一直想解决这个问题。即使使用as3wavsound类,在第一次播放声音时仍然存在延迟。 - 2smacks
1个回答

3
如果这只是在您播放音频的第一次发生,可能是由于解压问题。我排除了下载延迟,因为您说您已经在预加载器或类似工具中加载了所有声音。
像我之前所说,如果这只发生在第一次播放时,一个解决方法是在预加载时播放所有声音,但将其静音。
例如:
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;
}

播放静音是一种不太优雅的解决方案。希望有人知道更好的解决方案。否则我会将您的答案标记为最佳答案。 - Tieme
是的,这是一个丑陋的hack。但是试一下看是否有效,这样你就可以缩小问题范围。 - Jorjon
没错,它有效了。我编辑了你的帖子,以防有人寻找正确答案。 - Tieme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接