【问题标题】:Why isn't this embedded sound file playing?为什么这个嵌入的声音文件没有播放?
【发布时间】:2013-08-13 06:54:14
【问题描述】:

我一直在阅读一些教程,试图找到如何在 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、Maid with the Flaxen Hair.mp3 和 Sleep Away.mp3,所有这些都是 Windows 7 在 Libraries\Music\Sample Music 中的默认设置。他们都没有工作。然后我在别处下载了一个随机的 mp3 文件并尝试使用它,它工作得很好(Blackbird Blackbird - Heartbeat.mp3 from http://www.last.fm/music/+free-music-downloads/sample)。我尝试使用转换器来确保 Kalimba 的频率为 44100 Hz,比特率为 128 kbps,但这似乎不起作用。有什么区别?

【问题讨论】:

    标签: actionscript-3 audio air embed flash


    【解决方案1】:

    你的代码对我来说非常有效。检查您的 mp3 文件。尝试不同的文件,看看它是否有效。

    还要检查以下愚蠢的错误:

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

    【讨论】:

    • 据我了解,Main 类不应该通过 addChild() 添加;这是入口点。我尝试调用 stage.addChild(this),以防万一。路径是正确的。我还尝试过使用 Flaxen Hair.mp3 和 Sleep Away.mp3 的 Maid,所有这三个都来自 Libraries\Music\Sample Music 中的 Windows 7 默认设置。今天早上,我从 FlashDevelop 转移到在 Flash Builder 4.6 中尝试它。我必须对文件或路径本身做任何特别的事情吗?您使用的文件是否易于在线免费获得?
    • 是的,如果它是主类,则不需要 addChild()。我使用了一些免费声音库中的免费 MP3 声音。 FlashDevelop 或 Flash Builder 之间没有任何区别,如果您针对不同的 Flash SDK,可能会有区别。好的,我的第二个猜测是 - 你的 mp3 很大,尝试通过 SoundChannel 播放它,同时为 COMPLETE 事件设置一个事件侦听器。如果可以的话,发布mp3,我想看看。作为回报,我将发布工作代码。
    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多