« ケーススタディ[1] FLVの無限ループ(JP) | Main | ケーススタディ[3] RotatoryClip(JP) »

ケーススタディ[2] mp3の再生(JP)

前回に引き続き今回はコンテンツ中にロードされたmp3を再生する時のコツを一つ載せようと思う。mp3はflashで再生する場合、swf内に読込んでライブラリに登録しておく方法とmp3ファイルを動的にURLから読込む2つの方法がある。例えば、as2.0を選択することでflaにアクションスクリプトを記述せず別のasファイルで管理することができる。これは完全にスクリプトとオーサリング作業を分担し平行してできること、ファイルの更新がしやすい(スクリプトだけのバグや修正に互いにmailなどの通信でflaファイルを送受信しないで済むなど)利点がある。

swfは軽く作る
同様にmp3といったメディアファイルを扱う場合も、swf自体から出来るだけメディアを排除することが望ましい。mp3自体を管理しやすいこと、さらにURLから読み込むことでfla自体が無駄に大きくならないことで制作作業がしやすいことも実際の制作現場ではかなりプラスになる。

MP3を読み込む

_snd = new Sound(c);
_snd.onLoad = function(success:Boolean){
	if(success){
		this.setVolume(vol);
		this.start(0);//repeat from beginning
	}
};
_snd.loadSound(url);
ここで一つ注意したいことがある。mp3を読み込むときはかならずボリュームの設定をロード後にしなければその前に設定されたボリュームの設定がクリアされてしまう。

音量を保存する
今回このプロジェクトではミュートの設定を保存し、音を嫌うユーザに対して再びサイトの訪れた時にミュートの状態を復帰するように制作した。突然映像が流れて同時に音声が流れることを嫌う人も少なからずいるのである。ローカルにボリューム値が設定されていなければ、デフォルトの値を設定する。ローカル共有オブジェクトには現在のボリューム値をセーブする。

_so = SharedObject.getLocal(SO_NAME, "/");
_so.data.top_vol = _so.data.top_vol == undefined ? DEFAULT_VOLUME : _so.data.top_vol;
muteBtn.addEventListener("click", this);
muteBtn.toggle = true;
muteBtn.selected = _so.data.top_vol == 0 ? true : false;

Post a comment