我正在尝试使用外部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文件位于同一文件夹中。这是正确的目录吗?我试着移动它但仍然无法播放声音。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
我有一些建议可能会有所帮助:
将mySound声明为类级属性。垃圾收集器可能会过早地处理变量,因为它是本地的。
mySound.play()返回一个SoundChannel对象。尝试将其存储在类级属性中。
在加载声音之前,为Event.COMPLETE的声音添加事件侦听器。发生此事件后尝试播放声音。实际上,您可能会尝试在加载之前播放声音。
private var mySound:Sound; private var mySoundChannel:SoundChannel; private function playSound():void { mySound = new Sound(); mySound.addEventListener(IOErrorEvent.IO_ERROR, handleIOError); mySound.addEventListener(Event.COMPLETE, handleLoadCompletion); mySound.load(new URLRequest("Menu.mp3")); } private function handleLoadCompletion(evt:Event):void { mySoundChannel = mySound.play(); } private function handleIOError(evt:IOErrorEvent):void { //handle error if needed }
修改强>
在审核the docs之后,我认为建议3没有必要。