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

「問題は、何も再生されていないことです。」

コードをコピーしてAS3クラスファイルを作成しました(独自のローカルMP3 URLに置き換えます)。次に、次のようにAS3ファイルを作成しました。

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

そしてそれを実行しました。サウンドが正しく再生され、ループしました。

それは私のために働いているので、多分それがエラーがない理由です。質問は申し訳ありませんが、スピーカーはオンになっています。あなたのシステムは別のソースからのサウンドを再生していますか...CD、mp3プレーヤー?

私はplay(0、1000);を使用しました。@Gooseが言及し、それはうまく機能しました。シンプルで効果的。

于 2012-11-13T07:47:23.920 に答える
0

サウンドの完了時に再度サウンドを再生するイベント リスナーを用意する代わりに、パラメーターを.play()メソッドに追加できます。最初のパラメーターはサウンドの再生を開始する位置を示し、2 番目のパラメーターは再生回数を示し、3 番目のパラメーターはサウンド トランスフォームを適用する場合に使用されます。あなたの場合、.play(0, int.MAX_VALUE);これを行うと、探している連続ループが得られます。

于 2012-10-22T18:06:34.037 に答える