0

小さな MP3 ファイルを再生し、30 回ループするシンプルなボタンがあります。MP3 はサーバー (urlMP3) からストリーミングされます。

私の Galaxy S2 では、30 ループごとにサーバーにアクセスしていることがわかります。ループするたびに MP3 をダウンロードしますか、それとも 1 回ダウンロードして電話のメモリから再生しますか?

//Button 'audioYes' to play audio loop x 30
var soundLoop:Sound = new Sound();
var soundChannel:SoundChannel;
var soundLoopUrl:URLRequest = new URLRequest(urlMP3);

audioYes.addEventListener(MouseEvent.CLICK, f2_MouseClickHandler);

function f2_MouseClickHandler(event:MouseEvent):void {
    soundLoop.load(soundLoopUrl);
    soundLoop.play(0, 30);
}

毎回ダウンロードする場合、一度ダウンロードしてから再生するにはどうすればよいでしょうか? ご協力いただきありがとうございます。

編集: 2012 年 9 月 1 日 シンプルなフラッシュ ファイルを作成し、@Rytis から提供された以下を追加しました。最後の行 this.mySound.play "Error #1009: Cannot access a property or method of a null object reference." というエラーが表示されます。私はそれで何をしますか?

import flash.media.Sound;
import flash.net.URLLoader;
import flash.display.Loader;

var mySound:Sound = new Sound();
var myurlLoader:URLLoader = new URLLoader();

myurlLoader.addEventListener(Event.COMPLETE, this.onSoundLoadComplete)
myurlLoader.load(new URLRequest("01.mp3"))

function onSoundLoadComplete(event:Event):void{
this.mySound = URLLoader(event.target).data as Sound;
this.mySound.play(0,30);
}
4

1 に答える 1

2

簡単な答え-サウンドをダウンロードして、再生する前に変数に保存します。

例:

package {
    import flash.events.Event;
    import flash.media.Sound;
    import flash.net.URLLoader;
    import flash.net.URLRequest;

public class SoundLoadTest {

    protected var sound     : Sound;

    public function SoundLoadTest () {

        var urlLoader : URLLoader = new URLLoader();
        urlLoader.addEventListener( Event.COMPLETE, this.onSoundLoadComplete )
        urlLoader.load( new URLRequest( "path/to/sound.file" ) )

    }

    protected function onSoundLoadComplete ( event : Event) : void {

        // save loaded sound to a class field
        this.sound = URLLoader( event.target ).data as Sound;

        // start playing sound
        this.sound.play( 0, 30 );

    }

}

}
于 2012-08-27T11:24:09.150 に答える