- m_soundChannel = m_soundFactory.play();
+ m_soundChannel = m_soundFactory.play();
+ m_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
-
+
+Soundクラスのplayを呼んだ場合、再びイベント登録やSoundTransformでのパンとボリューム設定を行う必要があります。
+
+!!mp3をswfファイルに埋め込む
+
+今までの説明は外部のmp3を読み込む場合の例でしたが、今度はswfファイルにmp3を埋め込んでしまいます。
+これにより、1つのswfファイルだけ持ち運べばよいので楽なんですが、ファイルサイズはmp3のサイズ分増えます。
+
+ package {
+ import flash.display.*;
+ import flash.utils.*;
+ import flash.geom.*;
+ import flash.text.*;
+ import flash.events.*;
+ import flash.media.Sound;
+ import flash.media.SoundChannel;
+ import flash.media.SoundTransform;
+ import flash.net.URLRequest;
+
+ public class SoundTest extends Sprite {
+ private var m_text:TextField;
+
+ // 読み込む外部mp3を指定 ==> sound0
+ [Embed(source='test.mp3')]
+ private var sound0:Class;
+
+ private var m_soundFactory:Sound; ///< サウンドデータ
+ private var m_soundChannel:SoundChannel; ///< サウンド再生用
+
+ public function SoundTest() {
+ // テキストの作成
+ m_text = new TextField();
+ m_text.text = "";
+ m_text.autoSize = "left";
+ m_text.multiline = true;
+ m_text.x = 0;
+ m_text.y = 0;
+
+ addChild(m_text); // ルートのSpriteにオブジェクトを追加
+
+ // 埋め込みサウンド
+ m_soundFactory = new sound0() as Sound;
+
+ // 再生処理
+ m_soundChannel = m_soundFactory.play();
+
+ // 音量とパンの設定
+ var transform:SoundTransform;
+ transform = new SoundTransform();
+ transform.pan = 0.0; // パンは中心(-1 〜 +1)
+ transform.volume = 1.0; // フルボリューム
+ m_soundChannel.soundTransform = transform;
+
+ // 再生時のイベント割り当て
+ m_soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete);
+ }
+
+ /**
+ * サウンドの再生終了を取得
+ */
+ private function onSoundComplete(event:Event):void {
+ // 終了したSoundChannelを判定
+ if(m_soundChannel == event.target) {
+ m_text.appendText("\nサウンドの再生が完了しました。");
+ }
+ }
+ }
+ }
+
+ [Embed(source='test.mp3')]
+ private var sound0:Class;
+にて「test.mp3」を埋め込みます。
+
+これを使って
+ m_soundFactory = new sound0() as Sound;
+としてSoundクラスとして埋め込んだsound0にてnewします。
+この場合は、SoundクラスのaddEventListener関数での読み込みチェックイベントなどは(埋め込まれているゆえに)不要になります。
+
+後は、
+ m_soundChannel = m_soundFactory.play();
+として再生です。この後は、外部のmp3を処理したときと同じになります。