AS3播放音频并循环播放

时间:2012-10-22 18:00:30

标签: actionscript-3 audio

我正在尝试在我的项目背景中播放音频文件,但到目前为止到目前为止还没有成功。这是我到目前为止所得到的。

package  {

    import flash.display.*; 
    import flash.events.*; 
    import flash.net.*; 
    import flash.media.*; 

    public class Music extends MovieClip {

        // Create a sound
        private var music:Sound;

        // Use a URLRequest for file path
        private var request:URLRequest;

        // Create a sound buffer
        private var buffer:SoundLoaderContext;

        // Create a sound channel
        private var channel:SoundChannel;

        public function Music() {
            // constructor code
            //Instantiate all sound objects
            buffer = new SoundLoaderContext(1000);
            request = new URLRequest("SMB3-Grassland-Map.mp3");
            music = new Sound(request, buffer);

            // Play music and assign it to a channel
            channel = music.play();

            // Add an event listener to the channel
            channel.addEventListener(Event.SOUND_COMPLETE, loopMusic);
        }

        // playMusic method restarts music
        private function playMusic()
        {
            channel = music.play();
            channel.addEventListener(Event.SOUND_COMPLETE, loopMusic);
        }

        // Channel event listener call playMusic method
        private function loopMusic(e:Event)
        {
            if (channel != null)
            {
                channel.removeEventListener(Event.SOUND_COMPLETE, loopMusic);

                playMusic();
            }
        }

    }
}

这只是为了播放外部音频文件并让它不断循环。

2 个答案:

答案 0 :(得分:0)

您可以在.play()方法中添加参数,而不是让声音完成时再次播放声音的事件侦听器。第一个参数表示您希望它开始播放的声音在哪一点,第二个参数表示您希望它播放多少次,如果您想要应用声音变换,则使用第三个参数。在您的情况下,您可以执行.play(0, int.MAX_VALUE);这将为您提供您正在寻找的连续循环。

答案 1 :(得分:0)

“问题在于它根本没有播放任何东西。”

我复制了你的代码并创建了一个AS3类文件(替换了我自己的本地MP3 URL) 然后创建一个AS3文件,其中包含以下内容:

import Music;
var mus:Music = new Music();

然后跑了。声音播放和循环正确。

它对我有用,所以也许这就是为什么没有错误。对不起,问题是您的发言人;你的系统是从另一个源播放声音... cd,mp3 player?

我用过这个游戏(0,1000); @Goose提到并且效果很好;简单而有效。