0

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

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();
            }
        }

    }
}

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

4

2 回答 2

0

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

于 2012-10-22T18:06:34.037 回答
0

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

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

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

并运行它。声音正确播放和循环播放。

它对我有用,所以也许这就是没有错误的原因。很抱歉这个问题,但你的扬声器在吗?您的系统是否正在播放来自其他来源的声音... cd、mp3 播放器?

我用过 play(0, 1000); @Goose 提到并且效果很好;简单有效。

于 2012-11-13T07:47:23.920 回答