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 の場合、読み込みに成功しています。