« PHP:配列のポインタ制御 | メイン | PHP:each()関数 »

2005年12月04日

FLASH:スクリプトでmp3ファイルを読み込み再生する

フレームアクションでのmp3ファイルを読み込む場合のサンプルです。読み込み・読み込み%の出力・読み込みが終わった後の処理・一時停止など、さまざまなアクションをスクリプト上で行うことができます。

■準備
・ステージ上にsoundLoadingという名前のムービークリップを用意します。(インスタンス名もsoundLoadingに設定)そのMCの中には、ダイナミックテキストのボックスを配置し、「変数」に「per」と入力しておきます。

以下、メインフレーム内に記述します。以下のスクリプトはFLASH MX以降で有効です。

playSound = new Sound();  //新規にサウンドオブジェクトを生成します。
s_pos = 0;  //再生経過時間(ミリ秒)
playSound.loadSound("test.mp3", false);  //mp3読み込み・ストリーミング再生はしない

// EnterFrameで読み込み%を出力
soundLoading.onEnterFrame = function(){
    var per = Math.floor(playSound.getBytesLoaded()/playSound.getBytesTotal()*100);
    //getBytesLoaded():読み込まれたバイト数
    //getBytesTotal():mp3のファイルサイズ
    //perは読み込んだ%を表します。
    if(!per){
        soundLoading.per = 0;
    }else{
        soundLoading.per = per;
        if(100 <= per){
            delete soundLoading.onEnterFrame;  //mp3読み込み%出力処理を終了
            soundLoading._visible = false;  //mp3読み込み%を非表示
        }
    }
}

//mp3ファイルが読み込まれたかどうかをチェック
playSound.onLoad = function(success){
    if(success){
        trace("mp3ファイルの読み込みに成功しました。"+"/"+playSound.getBytesLoaded()+"/"+playSound.getBytesTotal());
        //ここにはmp3読み込み成功時の処理を記述します。
    }else{
        trace("mp3ファイルの読み込みに失敗しました。");
        //ここにはmp3読み込み失敗時の処理を記述します。
    }
}

//mp3ファイルの再生が終了した場合の処理
playSound.onSoundComplete = function(){
    trace("再生が終了しました。");
    //ここにはmp3再生終了時の処理を記述します。
}

//mp3再生メソッド
function soundPlay(){
    playSound.start(s_pos/1000);  //停止箇所から再生開始(初期は先頭から)
    //再生経過時間取得処理
    _root.onEnterFrame = function(){
        s_dur = playSound.duration;  //load したmp3の長さ(ミリ秒)
        s_pos = playSound.position;  //再生経過時間(ミリ秒)
    }
}

//mp3停止メソッド
function soundStop(){
    playSound.stop();  //mp3を停止
    delete _root.onEnterFrame;  //再生経過時間取得処理を終了
}

//これで準備完了です。

//■mp3の再生を行いたい場合
//(このユーザ定義関数を使用すると、最初の実行時はmp3の最初から、
//2回目以降は停止した時点から再生されます。)
soundPlay();

//■mp3を停止したい場合
soundStop();

投稿者 wing : 2005年12月04日 01:06

コメント