タイムラインに張り付けた音声制御

flash で音声制御(停止したり、再生する)って、やはり悩むところなのかしら?

ググるとそれなりに件数がヒットしますね。

ということでワタシもご多分にもれず、よくわからなかったのでメモ。

(1)音声データを「ファイル」→「読み込み」→「ライブラリに読み込み」

(2)「ライブラリ」から読み込んだデータを選択して右クリック。

サウンドプロパティをあけて、「リンケージ」にクラス名を適当に設定し、基本クラス:flash.media.Sound を設定。

チェックボックス:ActionScript用に書き出し、1フレーム目に書き出しをチェック。

(3)スクリプトレイヤを作って、以下のスクリプトを登録。

var fctrl:int = 0; // 制御判定用フラグ
var snd:Sound = new snd_1(); // snd_1 は、(2)で設定したクラス名
var sc :SoundChannel ;
var pos:uint = 0;
sc = snd.play();

//制御ボタンを張り付けてインスタンス名(適当につけたctlbtn)にイベントを追加。
//ここでは、クリックした際に、タイムラインを止めると同時に、音声も止めたり、再生したりする。

ctlbtn.addEventListener(MouseEvent.CLICK, onClickCtrl);
function onClickCtrl(event:MouseEvent):void
{
	if( fctrl == 0 ){ // 再生状態のとき
		stop(); // タイムラインを止める
		pos = sc.position; // 音声の再生位置を覚える
		sc.stop(); // 音声停止
		ctlbtn.label = "再 生"; // ボタンのラベルを「再生」に変更
		fctrl = 1; // 停止状態に設定
	}else{
		ctlbtn.label = "停 止"; // ボタンのラベルを「停止」に変更
		play(); // タイムラインを再生
		sc = snd.play(pos); // 音声を停止位置から再生
		fctrl = 0; // 再生状態に設定
	}
}

コメント