Flashゲーム講座 & アクションスクリプトサンプル集

 

サウンドオブジェクトを作成する

 


■サウンドオブジェクトを作成する

 
new 演算子を使って、Sound クラスをインスタンス化します。
 
new Sound( ムービークリップ階層 ) :Sound
第01引数(略可)MovieClipサウンド出力を制御したいムービークリップを指定。省略した場合 _level0
戻り値 Sound新しい Sound オブジェクトが得られる
 
サウンドオブジェクトを作成する

// サウンドオブジェクトを作成する
var sound_obj = new Sound();
 
■第01引数(ムービークリップ階層)
 
ここで指定するムービークリップは、サウンドの出力設定と関係があります。
 
タイムラインに配置した、静的なサウンドに影響があります。
 
■出力設定の影響範囲について
 
サウンドの出力設定は、ムービークリップの子孫にも反映されます。
 
 
■複数の出力設定が、親子関係上に存在する場合
 
結果は、祖先の設定値と合成(乗算)されます。
 
例えば、自身の音量を 80% と設定します。
 
親の音量を 50% と設定します。
 
この場合、最終的な自身の音量は、0.8 * 0.5 = 40% となります。
 
1つのサウンドの出力設定は、ミキサーとして機能します。
 
 
■動的にサウンドを再生する場合
 
複数の音を同時に再生したい場合、必要な数だけ Sound オブジェクトを用意します。
 
1つの Sound オブジェクトから、1つの音を再生します。
 

■マスター用の Sound オブジェクトを作成する

 
Flash 内で使われているすべてのサウンドの出力を、一括で設定する事ができます。
 
Sound コンストラクタの引数に、_root を指定します。
 
引数を省略しても、同様の効果があります。
 
■作成例
 
マスター用のサウンドオブジェクトを作成する

// マスター用のサウンドオブジェクトを作成する
var sound_obj = new Sound(_root);
 
■影響範囲例
 
 

■チャンネル用の Sound オブジェクトを作成する(効果音など)

 
音1つ1つごとに、異なるサウンドの出力設定を行う事ができます。
 
Sound オブジェクトを、必要な数だけ、複数作成します。
 
Sound コンストラクタの引数に、空のムービークリップを指定します。
 
■注意点
 
同一のムービークリップを指定しないように注意します。
 
また、空のムービークリップ同士は、兄弟関係となるよう配置します。
 
親子関係である場合、出力設定は干渉してしまいます。
 
■サポートチャンネル数について
 
Flash 7 以前では、 8 曲の同時再生に対応しています。
 
Flash 8 以降から、32 曲の同時再生に対応しています。
 
■作成例
 
お互い干渉しない、3つの Sound オブジェクトを作成する(Flash 6 以降)

// ------------------------------------------------------------
// 空のムービークリップを作成して配置する
// ------------------------------------------------------------
var mc0 = _root.createEmptyMovieClip("sound_mc0" , 0);
var mc1 = _root.createEmptyMovieClip("sound_mc1" , 1);
var mc2 = _root.createEmptyMovieClip("sound_mc2" , 2);

// ------------------------------------------------------------
// サウンドオブジェクトを作成
// ------------------------------------------------------------
var sound_obj0 = new Sound( mc0 );
var sound_obj1 = new Sound( mc1 );
var sound_obj2 = new Sound( mc2 );
 
お互い干渉しない、チャンネル用の Sound オブジェクトを作成する(Flash 7 以降)

// ------------------------------------------------------------
// サウンドオブジェクトのリストを作成
// ------------------------------------------------------------
var sound_list = (function(){

	// ------------------------------------------------------------
	// 必要なチャンネルの総数
	// ------------------------------------------------------------
	var channel_max = 8;

	// ------------------------------------------------------------
	// 空ムービークリップを配置するターゲット
	// ------------------------------------------------------------
	var target = _root;

	// ------------------------------------------------------------
	// チャンネル用のサウンドオブジェクトを作成する
	// ------------------------------------------------------------
	var list = new Array();
	var i;
	for(i=0;i < channel_max;i++){

		// 最前面となる深度を取得する
		var depth = target.getNextHighestDepth();

		// 空のムービークリップを作成して配置する
		var mc = target.createEmptyMovieClip("sound_mc"+i , depth);

		// サウンドオブジェクトを作成する
		var sound_obj = new Sound(mc);

		// リストに追加する
		list.push(sound_obj);
	}

	return list;

}).call();
 
■影響範囲例
 
 


 

サウンドの再生制御について

 
 


■再生制御の機能一覧

 
■プロパティ
 
プロパティ名 型 説明
position Number 現在の再生位置を取得する。(単位:ミリ秒)
 
■メソッド
 
メソッド名 説明
start() サウンドの再生を開始する。
stop() サウンドの再生を停止する。
 
■イベント
 
プロパティ名 説明
onSoundComplete サウンドの再生が完了した時に実行されるイベント。
 

■サウンドの再生を開始する

 
start() メソッドを使用します。
 
Sound.start ( 再生開始位置 , 繰り返し回数 ) :Void
第01引数(略可)Number再生を開始する位置を指定。(単位:秒)
第02引数(略可)Numberサウンドを繰り返し再生したい場合、回数を指定。
戻り値 Voidなし
 
■第01引数 再生開始位置
 
途中から再生を開始したい場合に指定します。
 
設定する数値の単位は、秒です。
 
第02引数による、ループ再生にも影響するので注意してください。
 
■第02引数 繰り返し回数
 
サウンドを繰り返しループ再生したい場合に指定します。
 
終端まで再生が終わると、第01引数で指定した位置まで戻ります。
 
「最初」から開始して、「終端」から「途中」に戻る事はできません。
 
「途中」から開始して、「終端」から「最初」に戻る事はできません。
 
サウンドが途切れない、完璧なループ再生が可能です。
 
■低品質なループについて
 
終了を検出してから、再生をやり直す方法もあります。
 
この場合、無音が発生する、低品質なループとなります。
 
サウンドの終端をフェードアウトしておくと、自然な流れとなるでしょう。
 
■使用例
 
埋め込んだサウンドファイル "my_sound" の再生を開始する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付ける (リンケージ識別子 "my_sound" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound");

// ------------------------------------------------------------
// 再生を開始する
// ------------------------------------------------------------
sound_obj.start();
 
外部サウンドファイルの再生を開始する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 読み込みが完了すると実行されるイベント (成功失敗に関係なく)
// ------------------------------------------------------------
sound_obj.onLoad = function (result){

	// 読み込みに失敗
	if(!result) return;

	// 再生を開始する ( 0 秒目から開始)( 3 回繰り返し)
	sound_obj.start(0 , 3);
};

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (イベント再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , false);
 

■サウンドの再生を停止する

 
stop() メソッドを使用します。
 
Sound.stop ( "リンケージ識別子" ) :Void
第01引数(略可)String任意の埋め込みサウンドの再生のみを停止したい場合、リンケージ識別子を指定
戻り値 Voidなし
 
■第01引数 リンケージ識別子
 
1つの Sound オブジェクトから、複数の音を同時に再生する事ができます。
 
引数にリンケージ識別子を指定すると、1つの音を停止する事ができます。
 
1つの Sound オブジェクトによる、複数同時再生はオススメしません。
 
再生位置などの取得が、困難になるからです。
 
引数を省略した場合、複数同時再生した音をすべて停止します。
 
■使用例
 
再生を停止する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付ける (リンケージ識別子 "my_sound" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound");

// ------------------------------------------------------------
// 再生を開始する
// ------------------------------------------------------------
sound_obj.start();

// ------------------------------------------------------------
// 再生を停止する
// ------------------------------------------------------------
sound_obj.stop();
 
個別に再生を停止する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付け、再生を開始する (リンケージ識別子 "my_sound_00" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound_00");
sound_obj.start();

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付け、再生を開始する (リンケージ識別子 "my_sound_01" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound_01");
sound_obj.start();

// ------------------------------------------------------------
// 1つの再生を停止する (リンケージ識別子 "my_sound_01" )
// ------------------------------------------------------------
sound_obj.stop("my_sound_01");

// ------------------------------------------------------------
// すべての再生を停止する
// ------------------------------------------------------------
sound_obj.stop();
 

■すべてのサウンドの再生を停止する

 
stopAllSounds() 関数を使用します。
 
stopAllSounds ( ) :Void
引数 Voidなし
戻り値 Voidなし
 
すべてのサウンドの再生を停止する

stopAllSounds();
 

■サウンドの再生位置を設定する

 
■サウンドの再生位置を取得する(Flash 6 以降)
 
position プロパティを使用します。
 
得られる数値の単位は、ミリ秒です。
 
サウンドの再生位置を取得する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付ける (リンケージ識別子 "my_sound" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound");

// ------------------------------------------------------------
// 再生を開始する
// ------------------------------------------------------------
sound_obj.start();

// ------------------------------------------------------------
// 毎フレーム実行されるイベント
// ------------------------------------------------------------
_root.onEnterFrame = function (){

	// 出力テスト
	trace( sound_obj.position );

};
 
■サウンドの再生位置を設定する
 
start() メソッドを使用して、サウンドの再生をやり直します。
 
第01引数から、開始位置を指定します。
 
サウンドの再生位置を設定する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付ける (リンケージ識別子 "my_sound" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound");

// ------------------------------------------------------------
// マウスボタンを押すと実行されるイベント
// ------------------------------------------------------------
_root.onMouseDown = function (){

	// 開始秒数
	var position = 3.0;

	// 再生を停止する
	sound_obj.stop();

	// 指定した秒数から、再生を開始する
	sound_obj.start(position);
};
 

■サウンドの再生が完了したか監視する(Flash 6 以降)

 
onSoundComplete イベントを使用します。
 
■イベントが発行されない場合について
 
start() メソッドの第02引数にて、ループ再生を指定している場合、すべての繰り返し回数を消化するまでは、イベントは発行されません。
 
loadSound() メソッドの第02引数にて、ストリーミング再生を指定している場合、イベントは発行されません。
 
■使用例
 
onSoundComplete イベントを使ってループ再生する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 再生が完了すると実行されるイベント
// ------------------------------------------------------------
sound_obj.onSoundComplete = function (result){

	trace("再生が完了した");

	// 再生を開始する
	sound_obj.start();

};

// ------------------------------------------------------------
// 読み込みが完了すると実行されるイベント (成功失敗に関係なく)
// ------------------------------------------------------------
sound_obj.onLoad = function (result){

	// 読み込みに失敗
	if(!result) return;

	// 再生を開始する
	sound_obj.start();
};

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (イベント再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , false);
 


 

サウンドの出力設定について

 
 


■サウンドの出力設定の機能一覧

 
■メソッド
 
メソッド名 説明
setVolume() サウンドのボリュームを設定する。
getVolume() サウンドのボリュームを取得する。
setPan() サウンドのパンを設定する。
getPan() サウンドのパンを取得する。
setTransform() サウンドのトランスフォームを設定する。
getTransform() サウンドのトランスフォームを取得する。
 

■サウンドのボリュームを設定する

 
■サウンドのボリュームを設定する
 
setVolume() メソッドを使用します。
 
単位は、パーセントです。
 
0(無音) 〜 100(デフォルト) の数値を指定します。
 
100 より大きい数値を指定した場合、音割れが発生するので注意してください。
 
Sound.setVolume ( ボリューム ) :Void
第01引数 Number音量 (0〜100) を指定(単位:パーセント)
戻り値 Voidなし
 
■サウンドのボリュームを取得する
 
getVolume() メソッドを使用します。
 
Sound.getVolume ( ) :Number
引数 Voidなし
戻り値 NumbersetVolume() で指定したボリューム値 (0〜100) が得られる
 
■使用例
 
サウンドのボリュームを設定する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// ボリュームを設定する
// ------------------------------------------------------------
sound_obj.setVolume(50);

// ------------------------------------------------------------
// 設定したボリューム値を取得する
// ------------------------------------------------------------
var volume = sound_obj.getVolume();

// 出力テスト
trace(volume); // 50
 

■サウンドのパンを設定する

 
■サウンドのパンを設定する
 
setPan() メソッドを使用します。
 
単位は、パーセントです。
 
-100(左) 〜 0(中央) 〜 100(右) の数値を指定します。
 
Sound.setPan ( パン ) :Void
第01引数 Numberパン (-100〜100) を指定(単位:パーセント)
戻り値 Voidなし
 
■サウンドのパンを取得する
 
getPan() メソッドを使用します。
 
Sound.getPan ( ) :Number
引数 Voidなし
戻り値 NumbersetPan() で指定したパン値 (-100〜100) が得られる
 
■使用例
 
サウンドのパンを設定する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// パンを設定する
// ------------------------------------------------------------
sound_obj.setPan(40);

// ------------------------------------------------------------
// 設定したパン値を取得する
// ------------------------------------------------------------
var pan = sound_obj.getPan();

// 出力テスト
trace(pan); // 40
 

■サウンドの左右の出力を詳細に設定する

 
■サウンドのトランスフォームを設定する
 
setTransform() メソッドを使用します。
 
Sound.setTransform ( SoundTransform ) :Void
第01引数 ObjectSoundTransform オブジェクトを指定
戻り値 Voidなし
 
■サウンドのトランスフォームを取得する
 
getTransform() メソッドを使用します。
 
Sound.getTransform ( ) :Object
引数 Voidなし
戻り値 ObjectSoundTransform オブジェクトが得られる
 
■ SoundTransform オブジェクトについて
 
新しいオブジェクトを作成し、以下のプロパティを追加します。
 
プロパティ 型 説明
ll Number 元は左から出力されていた音を左から出力します。
0(無音) 〜 100(デフォルト)
lr Number 元は右から出力されていた音を左から出力します。
0(無音) 〜 100(デフォルト)
rl Number 元は左から出力されていた音を右から出力します。
0(無音) 〜 100(デフォルト)
rr Number 元は右から出力されていた音を右から出力します。
0(無音) 〜 100(デフォルト)
 
■ SoundTransform オブジェクトの設定例
 
デフォルトの設定

// ------------------------------------------------------------
// SoundTransform オブジェクトを用意する(デフォルト)
// ------------------------------------------------------------
var sound_transform = {
	ll : 100,
	lr :   0,
	rr : 100,
	rl :   0
};
 
モノラルの設定

// ------------------------------------------------------------
// SoundTransform オブジェクトを用意する(モノラル)
// ------------------------------------------------------------
var sound_transform = {
	ll : 50,
	lr : 50,
	rr : 50,
	rl : 50
};
 
リバースステレオの設定

// ------------------------------------------------------------
// SoundTransform オブジェクトを用意する(リバースステレオ)
// ------------------------------------------------------------
var sound_transform = {
	ll :   0,
	lr : 100,
	rr :   0,
	rl : 100
};
 
■使用例
 
サウンドのトランスフォームを設定する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// SoundTransform オブジェクトを用意する(モノラル)
// ------------------------------------------------------------
var sound_transform = {
	ll : 50,
	lr : 50,
	rr : 50,
	rl : 50
};

// ------------------------------------------------------------
// トランスフォームを設定する
// ------------------------------------------------------------
sound_obj.setTransform(sound_transform);

// ------------------------------------------------------------
// 設定したトランスフォーム値を取得する
// ------------------------------------------------------------
sound_transform = sound_obj.getTransform();

// 出力テスト
trace(sound_transform); // { ll:50 , lr:50 , rr:50 , rl:50  }
 


 

ID3 タグを取得する(Flash 6 以降)

 
 


■ ID3 タグが得られるか監視する

 
onID3 イベントを使用します。
 
■ onID3 イベントが発行される場合について
 
loadSound()、attachSound() メソッドを実行します。
 
ID3 タグが存在する場合、onID3 イベントが発行されます。
 

■ ID3 タグを取得する

 
id3 プロパティを使用します。
 
ID3 タグが存在しない場合、undefined 値が得られます。
 
ID3 タグが存在する場合、オブジェクトが得られます。
 
■得られる情報の一例
 
プロパティ名 型 説明 ID3v2 frame
songname String タイトル(曲名) TIT2
artist String アーティスト名 TPE1
album String アルバム名 TALB
year String 西暦 TYER
track String トラック番号 TRCK
genre String 曲ジャンル TCON
comment String コメント COMM
 
■取得例
 
ID3 タグを取得する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// ID3 タグを検出すると実行されるイベント
// ------------------------------------------------------------
sound_obj.onID3 = function (){

	// ------------------------------------------------------------
	// ID3 オブジェクトを取得する
	// ------------------------------------------------------------
	var id3_info = sound_obj.id3;

	// ------------------------------------------------------------
	// 出力テスト
	// ------------------------------------------------------------
	trace( id3_info.songname );
	trace( id3_info.artist );
	trace( id3_info.album );
	trace( id3_info.year );
	trace( id3_info.track );
	trace( id3_info.genre );
	trace( id3_info.comment );

	// ------------------------------------------------------------
	// すべての情報を出力する
	// ------------------------------------------------------------
	var key;
	for(key in id3_info){
		trace(key + " : " + id3_info[key]);
	}

};

// ------------------------------------------------------------
// 読み込みが完了すると実行されるイベント (成功失敗に関係なく)
// ------------------------------------------------------------
sound_obj.onLoad = function (result){

	// 読み込みに失敗
	if(!result) return;

	// 再生を開始する
	sound_obj.start();
};

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (イベント再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , false);
 


 

静的なサウンドについて

 


■静的なサウンドについて

 
■静的なサウンドの配置について
 
Adobe Flash では、タイムラインにサウンドを配置する事ができます。
 
 

■静的なサウンドの出力を設定する

 
1.Sound オブジェクトを作成する
 
Sound オブジェクトの作成については、こちらで解説しています。
 
第01引数の、ムービークリップ階層の指定は、重要です。
 
1つの Sound オブジェクトは、ミキサーとして機能するようになります。
 
2.静的なサウンドの出力を設定する
 
サウンドの出力設定については、こちらで解説しています。
 


 

埋め込んだサウンドファイルを再生する

 

サンプルをダウンロード
 
 


■埋め込んだサウンドファイルを再生する

 
サウンドファイルを、 swf ファイルに埋め込む事ができます。
 
埋め込んだサウンドファイルは、動的に再生する事ができます。
 

■サウンドファイルを埋め込む(Adobe Flash の場合)

 
1.リンケージプロパティを開く
 
ライブラリウィンドウを開きます。
 
使用したいサウンドファイルから、リンケージプロパティを選択します。
 

 
2.リンケージ識別子を設定する
 
リンケージプロパティというダイアログが開きます。
 
識別子に好きな名称を付けます。
 
ここでは、"my_sound" と名前を付けます。
 
Flash 5 の場合は、『このシンボルに書き出す』にチェックを付けます。
 
Flash 5 の場合
 
 
Flash MX 以降の場合は、『ActionScript に書き出し』と『最初のフレームに書き出し』にチェックを付けます。
 
Flash 8 の場合
 
 
3.Flash を書き出して、データの埋め込みを確認する
 
この状態で、Flash を書き出します。
 
すると、swf ファイルにデータが埋め込まれるようになります。
 
プロファイラ機能を使用すると、データが埋め込まれたか確認できます。
 
タイムラインの1フレーム目のサイズが増えているでしょう。
 
埋め込む前の状態
 
 
埋め込んだ後の状態
 
 

■サウンドファイルを埋め込む(FlashDevelop の場合)

 
1.プロジェクトにサウンドファイルを追加する
 
プロジェクトウィンドウの、任意のフォルダを選択します。
 
「Add」→「Library Asset」を選択します。
 
ファイル選択ダイアログが開くので、サウンドファイルを選択します。
 

 
2.リンケージ識別子を設定する
 
追加されたサウンドファイルを選択して、「Options」を選択します。
 
「Library Asset Properties」ダイアログが開きます。
 
「Auto-generate ID ...」のチェックを外して、好きな識別子を付けます。
 
ここでは、"my_sound" と名前を付けます。
 
 
3.Flash を書き出して、データの埋め込みを確認する
 
この状態で、Flash を書き出します。
 
すると、swf ファイルにデータが埋め込まれるようになります。
 
swf ファイルのサイズが増えたか、確認します。
 
サウンドファイルのフォーマットに不備がある場合、ビルドに失敗します。
 

■サウンドファイルを埋め込む(Parafla の場合)

 
1.プロジェクトにサウンドファイルを追加する
 
ファイルリストに、サウンドファイルを追加します。
 
「アイテムの追加」→「ファイル」を選択します。
 
ファイル選択ダイアログが開くので、サウンドファイルを選択します。
 
2.リンケージ識別子を設定する
 
追加されたサウンドファイルを選択して、「プロパティ」を選択します。
 
「ファイルのプロパティ」ダイアログが開きます。
 
「サウンドの設定」の「オブジェクト名」に、好きな識別子を付けます。
 
ここでは、"my_sound" と名前を付けます。
 
 
3.ダミーのサウンドイベントを追加する
 
このままでは、サウンドファイルは埋め込まれません。
 
イベントリストにて、サウンドを利用する必要があります。(最低でも1回)
 
1フレーム目にサウンドを追加します。
 
「サウンドイベントの設定」から「停止」を選択するといいでしょう。
 
 
4.Flash を書き出して、データの埋め込みを確認する
 
この状態で、Flash を書き出します。
 
すると、swf ファイルにデータが埋め込まれるようになります。
 
swf ファイルのサイズが増えたか、確認します。
 

埋め込んだサウンドファイルを再生する

 
1.Sound オブジェクトを作成する
 
Sound オブジェクトの作成については、こちらで解説しています。
 
第01引数の、ムービークリップ階層の指定に注意してください。
 
サウンドの出力設定は、静的なサウンドにも影響します。
 
2.埋め込んだサウンドファイルと関連付ける
 
attachSound() メソッドを使用します。
 
引数に、再生制御したいサウンドファイルの、リンケージ識別子を指定します。
 
Sound.attachSound ( "リンケージ識別子" ) :Void
第01引数 String再生制御したいサウンドファイルの、リンケージ識別子を指定する
戻り値 Voidなし
 
3.関連付けたサウンドを再生する
 
サウンドの再生制御については、こちらで解説しています。
 
埋め込んだサウンドファイル "my_sound" の再生を開始する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付ける (リンケージ識別子 "my_sound" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound");

// ------------------------------------------------------------
// 再生を開始する
// ------------------------------------------------------------
sound_obj.start();

// ------------------------------------------------------------
// 再生を停止する
// ------------------------------------------------------------
//sound_obj.stop();
 
4.サウンドの出力を設定する
 
サウンドの出力設定については、こちらで解説しています。
 
埋め込んだサウンドファイルを再生し、サウンドの出力を設定する

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 埋め込んだサウンドファイルと関連付ける (リンケージ識別子 "my_sound" )
// ------------------------------------------------------------
sound_obj.attachSound("my_sound");

// ------------------------------------------------------------
// ボリュームを設定する
// ------------------------------------------------------------
sound_obj.setVolume(100);

// ------------------------------------------------------------
// パンを設定する
// ------------------------------------------------------------
sound_obj.setPan(75);

// ------------------------------------------------------------
// 再生を開始する
// ------------------------------------------------------------
sound_obj.start();
 

■音が出ない場合について

 
■音が出ない場合
 
Sound コンストラクタに、実在するターゲットを指定します。
 
attachSound() メソッドに、実在するリンケージ識別子を指定します。
 
■音が倍速で再生される場合
 
MP3 ファイルが、対応フォーマットであるか確認します。
 

■サウンドの埋め込みの問題点

 
サウンドの埋め込みは、基本的に1フレーム目に格納されます。
 
大抵の場合、サウンドファイルは大容量です。
 
1フレーム目の読み込みが完了するまでは、画面は一切表示されません。
 
例えば、Flash の総サイズのうち、60% がサウンドデータだった場合、60% の読み込みが完了するまで、一切の絵を表示する事ができません。
 
もしロード画面を実装している場合、ほぼ機能しなくなるでしょう。
 
■ロード用の Flash を別途用意する
 
ロード専用の Flash を表示し、そこにメインの swf ファイルを読み込みます。
 
Flash を読み込んで表示する方法については、こちらで解説しています。
 
■サウンドデータを、任意のフレームに埋め込む
 
リンケージプロパティを開いて、『最初のフレームに書き出し』のチェックを外します。
 
次に、サウンドファイルを任意のフレームに静的に配置します。
 
「同期」に「ストップ」を指定するといいでしょう。
 
その任意のフレームを、最低でも1回だけ再生します。
 
これで、attachSound() メソッドで利用できるようになります。
 


 

外部にあるサウンドを動的に再生したい(Flash 6 以降)

 

サンプルをダウンロード
 
 


■サウンドファイルの読み込みの機能一覧

 
■プロパティ
 
プロパティ名 型 説明
position Number 現在の再生位置を取得する。(単位:ミリ秒)
duration Number 再生可能な最大位置を取得する。(単位:ミリ秒)
 
■メソッド
 
メソッド名 説明
loadSound() 外部サウンドファイルの読み込みを開始する。
getBytesLoaded() これまでに読み込んだバイト数を取得する。
getBytesTotal() 外部サウンドファイルの総バイト数を取得する。
 
■イベント
 
プロパティ名 説明
onLoad 読み込みが完了すると実行されるイベント (成功失敗に関係なく)
 

対応するサウンドフォーマットについて

 
MP3 ファイルのみ対応しています。
 
対応フォーマットについては、以下の通りです。
 
ビットレート方式
 
ビットレート方式 対応
CBR(固定ビットレート) ○
ABR(平均ビットレート) ×
VBR(可変ビットレート) ×
FFS(フリーフォーマットストリーム) ×
 
サンプリングレート
 
サンプリングレート 対応
44,100HZ ○
22,050HZ ○
11,025HZ ○
 
ビットレート
 
ビットレート 対応
160kbps ○
128kbps ○
112kbps ○
80kbps ○
64kbps ○
56kbps ○
48kbps ○
32kbps ○
24kbps ○
20kbps ○
16kbps ○
8kbps ○
 

外部サウンドファイルを読み込み再生する

 
1.Sound オブジェクトを作成する
 
Sound オブジェクトの作成については、こちらで解説しています。
 
第01引数の、ムービークリップ階層の指定に注意してください。
 
サウンドの出力設定は、静的なサウンドにも影響します。
 
2.サウンドファイルの読み込みを開始する
 
loadSound() メソッドを使用します。
 
3.読み込みが完了するまで監視する
 
onLoad イベントを使用します。
 
4.サウンドの再生を制御する
 
サウンドの再生制御については、こちらで解説しています。
 
外部サウンドファイルを再生する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 読み込みが完了すると実行されるイベント (成功失敗に関係なく)
// ------------------------------------------------------------
sound_obj.onLoad = function (result){

	// 読み込みに失敗
	if(!result) return;

	// 再生を開始する
	sound_obj.start();

	// 再生を停止する
	//sound_obj.stop();
};

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (イベント再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , false);
 
5.サウンドの出力を設定する
 
サウンドの出力設定については、こちらで解説しています。
 
外部サウンドファイルを再生し、サウンドの出力を設定する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 読み込みが完了すると実行されるイベント (成功失敗に関係なく)
// ------------------------------------------------------------
sound_obj.onLoad = function (result){

	// 読み込みに失敗
	if(!result) return;

	// 再生を開始する
	sound_obj.start();
};

// ------------------------------------------------------------
// ボリュームを設定する
// ------------------------------------------------------------
sound_obj.setVolume(100);

// ------------------------------------------------------------
// パンを設定する
// ------------------------------------------------------------
sound_obj.setPan(75);

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (イベント再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , false);
 

■音が出ない場合について

 
■音が出ない場合
 
Sound コンストラクタに、実在するターゲットを指定します。
 
loadSound() メソッドに、実在するサウンドファイルの URL を指定します。
 
■音が倍速で再生される場合
 
MP3 ファイルが、対応フォーマットであるか確認します。
 
■ ID3 タグが取得できない場合
 
クロスドメインポリシーに違反していないか確認します。
 

■サウンドファイルの読み込みを開始する

 
loadSound() メソッドを使用します。
 
Sound.loadSound ( "URL" , ストリーミング再生? ) :Void
第01引数 Stringサウンドファイルが格納された URL を指定
第02引数 Booleantrue ならストリーミング再生、false ならイベント再生
戻り値 Voidなし
 
■ストリーミング再生について
 
メディアプレイヤーに最適です。
 
読み込み途中であっても、再生可能な位置まで再生する事ができます。
 
再生可能な最大位置を取得するには、duration プロパティを使用します。
 
得られる数値の単位は、ミリ秒です。
 
初回は、自動的に再生が開始されます。
 
停止したい場合は、すぐに stop() メソッドを呼び出します。
 
一部に機能制限があります。
 
start() メソッドを使って、ループ再生や、複数同時再生を行う事はできません。
 
■イベント再生について
 
効果音の再生に最適です。
 
読み込みが完了しない限り、再生の制御を開始する事はできません。
 
読み込みが完了するまで、待機する必要があります。
 
読み込み完了後は、埋め込み再生とほぼ同等に、サウンドの制御が可能です。
 
■キャッシュについて
 
一度読み込んだサウンドファイルは、キャッシュに残ります。
 
もう一度読み込むと、すぐに再生を開始する事ができます。
 
■ストリーム再生状況を取得する例
 
外部サウンドファイルのストリーム再生状況を取得する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (ストリーム再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , true);

// ------------------------------------------------------------
// 毎フレーム実行されるイベント
// ------------------------------------------------------------
_root.onEnterFrame = function (){

	// 現在の再生位置
	var position = sound_obj.position;

	// 再生可能な最大位置
	var duration = sound_obj.duration;

	// 出力テスト
	trace("position:" +  position);
	trace("duration:" +  duration);
};
 

■サウンドファイル読み込みのセキュリティについて

 
■クロスドメイン環境でも可能な処理について
 
サウンドファイルの再生に、制限はありません。
 
別ドメインのサウンドファイルを読み込んで、再生する事は可能です。
 
■クロスドメイン環境では不可能な処理について
 
別ドメインのサウンドファイルを読み込んで、ID3 タグを取得する事はできません。
 
■クロスドメインポリシーの解除について
 
クロスドメインポリシーは、解除する事ができます。
 
サウンドファイルを格納しているサーバーに、ポリシーファイルを設置しておきます。
 
ポリシーファイルは、自動的に読み込まれません。
 
手動的に、loadPolicyFile() メソッドを呼び出す必要があります。
 
その後、loadSound() メソッドを呼び出します。
 
■ローカルで実行されている Flash について
 
ローカルで実行されている Flash から、ネットワークに格納されているサウンドファイルに、読み取りアクセスする事はできません。
 
パブリッシュ設定から「ネットワークにのみアクセスする」を選択すると、読み取りアクセス可能になります。
 

■サウンドファイルの読み込み状況を取得する

 
■これまでに読み込んだバイト数を取得する
 
getBytesLoaded() メソッドを使用します。
 
Sound.getBytesLoaded ( ) :Number
引数 Voidなし
戻り値 Numberこれまでに読み込んだバイト数が得られる
 
■外部サウンドファイルの総バイト数を取得する
 
getBytesTotal() メソッドを使用します。
 
Sound.getBytesTotal ( ) :Number
引数 Voidなし
戻り値 Number外部サウンドファイルの総バイト数が得られる
 
■取得例
 
外部サウンドファイルの読み込み状況を取得する(Flash 6 以降)

// ------------------------------------------------------------
// サウンドオブジェクトを作成する
// ------------------------------------------------------------
var sound_obj = new Sound(_root);

// ------------------------------------------------------------
// 外部サウンドファイルの読み込みを開始する (ストリーム再生)
// ------------------------------------------------------------
sound_obj.loadSound("http://hakuhin.jp/download/js/audio/sample_00.mp3" , true);

// ------------------------------------------------------------
// 毎フレーム実行されるイベント
// ------------------------------------------------------------
_root.onEnterFrame = function (){

	// これまでに読み込んだバイト数を取得
	var loaded = sound_obj.getBytesLoaded();
	if(isNaN(loaded)) loaded = 0;

	// 外部サウンドファイルの総バイト数を取得
	var total = sound_obj.getBytesTotal();
	if(isNaN(total)) total = 0;

	// パーセント
	var percent  = loaded / total * 100;
	if(isNaN(percent)) percent = 0;

	// 出力テスト
	trace("loaded:"  +  loaded );
	trace("total:"   +  total  );
	trace("percent:" +  percent);
};
 

■サウンドの読み込みが完了したか監視する

 
onLoad イベントを使用します。
 
loadSound() メソッドによる読み込み処理が完了した事がわかります。
 
このイベントは、成功失敗に関係なく必ず発行されます。
 
コールバック関数の引数から、Boolean 値が得られます。
 
true の場合、読み込みに成功しています。