2010年01月20日

サウンド制御について。

どーもー
あいかわらずActionScript2で生きてる管理人です。

flashコンテンツにおけるサウンド制御についての覚え書きですー

場面によって異なるサウンドを鳴らしたいとき。
ステージのはしっこにサウンド用のムービークリップをつくり、
キーフレームにサウンドを置いてラベル名をつけ、
そのラベル名を呼び出して再生してます。

2010_0120_01.gif
こんなかんじ。

ふだんはフレーム1(ラベル名defa)でstop()している。
音を鳴らしたいときは、鳴らしたい音のフレームへgotoAndPlay。
ならしおわったらdefaに戻す。
ループ再生かそうでないかの設定は、サウンドファイルをおいたフレームに設定する。

これで今までやってきてたんですが、この方式では
一度再生しはじめたら停止・音量を制御できないんです。

たおとえば、音のON/OFFスイッチをつけても、すぐには再生が止まらず、今鳴っている音楽が終わって次の音からON/OFFになる(汗)

今回作ってるものは、メインBGMを鳴らしつつループする効果音を入れ替える仕様にしたいのですが、上記の方法だと入れ替えにできなくて、再生するたびにどんどん音が重なって大音量になってしまうのです。

そーこーでー
やっとsound()命令を覚えることにしました(笑)
ちゃんとオブジェクトで制御すればこんな苦労もいらないわけで、
さっそく

sound1=new Sound();
sound1=attachSound("識別子(リンケージ名)");

と定義してやって、

sound1.start("識別子(リンケージ名)");
sound1.stop("識別子(リンケージ名)");

とやってみる。

…ウホッ成功

と思ったのもつかの間、無限ループ設定ができないことを知る。
ループ数指定でも問題ないと思うんだけど、ここはひとつ根本的な解決方法を求めてググール様にお祈りをする。

すーるーとー
スクリプト制御じゃないとダメっぽいことが判明。
定義したsound1オブジェクトが再生終了するとイベントが発生するので、終わったら即再生しなおすように以下のようなスクリプトを足す。

sound1.onSoundComplete = function () {
sound1.start();
}

これでたしかにループ再生してくれるんだけど、何回かループすると一瞬音が途切れるんだよねえ…
いい解決方法があったら教えてちょふだい。
posted by t2c at 23:00| Comment(0) | TrackBack(0) | Flash
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/34848397

この記事へのトラックバック