为什么不播放这个嵌入式声音文件?

时间:2013-08-12 02:47:34

标签: actionscript-3 audio air embed flash

我一直在阅读一些教程,试图找到如何嵌入音频文件并在AS3中播放它们,并且它们倾向于显示非常相似的示例。但是,当我尝试使用这些示例时,没有播放任何内容。我的mp3文件将成功嵌入,所有代码行都将成功执行,但是没有声音。请使用以下代码:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.media.Sound;

    public class Main extends Sprite 
    {
        [Embed(source='/../lib/Kalimba.mp3')]        
        private var MySound : Class;         
        private var sound : Sound;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            sound = (new MySound()) as Sound;
            sound.play();
        }       
    }   
}

这里出了什么问题?在线的许多示例基本上都使用此代码,只是更改变量名称等。我正在使用FlashDevelop,以防万一。感谢。

修改的 显然它以某种方式链接到该文件。我尝试了Kalimba.mp3,使用Flaxen Hair.mp3的Maid和Sleep Away.mp3,所有这些都是Libraries \ Music \ Sample Music中的Windows 7默认值。他们都没有工作。然后我在其他地方下载了一个随机mp3文件并试图使用它,它工作得很好(Blackbird Blackbird - 来自http://www.last.fm/music/+free-music-downloads/sample的Heartbeat.mp3)。我尝试使用转换器来确保Kalimba处于44100 Hz,比特率为128 kbps,但这似乎不起作用。有什么区别?

1 个答案:

答案 0 :(得分:1)

我的代码完全适合我。检查你的mp3文件。尝试使用其他文件,看看它是否有效。

同时检查愚蠢的错误,如:

  • 您是否使用addChild()添加Main类的实例? Main.as中的init()只有在您将其添加到显示列表
  • 后才会触发
  • 您的来源中的路径是否正确?我已将我的路径改为“test.mp3”,将你的mp3放在根文件夹中以确定。