0

我正在尝试使用外部 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 文件位于同一文件夹中。这是正确的目录吗?我试着移动它,但仍然无法播放声音。

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

4

1 回答 1

1

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

  1. 将 mySound 声明为类级别属性。垃圾收集器可能会过早地处理变量,因为它是本地的。

  2. mySound.play() 返回一个 SoundChannel 对象。尝试将其存储在类级别属性中。

  3. 在加载声音之前,为 Event.COMPLETE 的声音添加一个事件侦听器。尝试在此事件发生后播放声音。实际上,您可能正试图在声音加载之前播放它。

    私有变量 mySound:声音;
    私人 var mySoundChannel:SoundChannel;

    私有函数 playSound():void
    {
        我的声音 = 新声音();
        mySound.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
        mySound.addEventListener(Event.COMPLETE, handleLoadCompletion);
        mySound.load(new URLRequest("Menu.mp3"));
    }

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

    私有函数句柄IOError(evt:IOErrorEvent):void
    {
        //如果需要,处理错误
    }

编辑:
查看文档后,我认为建议 3 没有必要。

于 2013-01-16T05:59:22.157 回答