我正在尝试使用外部mp3文件以as3代码播放声音。

所以这是我正在使用的代码:

    private function playSound():void
    {
        trace("loading sound");
        var mySound:Sound = new Sound();
        mySound.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
        mySound.load(new URLRequest("Menu.mp3"));
        mySound.play();
        trace("playing sound");
    }

    private function handleIOError(evt:IOErrorEvent):void
    {
        //handle error if needed
    }

音乐根本不播放。

出现痕迹“加载声音”和“播放声音”,因此正在运行代码。

mp3文件Menu.mp3与用于运行项目的.fla文件位于同一文件夹中。这是正确的目录吗?我尝试过移动它,但是仍然无法播放声音。

任何帮助将不胜感激,谢谢!

最佳答案

我有一些建议可能会有所帮助:

  • 将mySound声明为类级别的属性。垃圾回收器可能是过早的,因为它是局部的。
  • mySound.play()返回一个SoundChannel对象。尝试将其存储在类级别的属性中。
  • 在加载声音之前,将事件侦听器添加到Event.COMPLETE的声音中。发生此事件后,尝试播放声音。实际上,您可能正在尝试在声音加载之前播放声音。

  • 私有(private)var mySound:Sound;
    私有(private)var mySoundChannel:SoundChannel;

    私有(private)函数playSound():void
    {
    mySound = new Sound();
    mySound.addEventListener(IOErrorEvent.IO_ERROR,handleIOError);
    mySound.addEventListener(Event.COMPLETE,handleLoadCompletion);
    mySound.load(new URLRequest(“Menu.mp3”));
    }

    私有(private)函数handleLoadCompletion(evt:Event):void
    {
    mySoundChannel = mySound.play();
    }

    私有(private)函数handleIOError(evt:IOErrorEvent):void
    {
    //根据需要处理错误
    }

    编辑:
    回顾the docs之后,我认为建议3是不必要的。

    09-11 19:22
    查看更多