• HOME
  • BLOG
  • Flash
  • ループサウンドはloops指定のほうがよさそう?

ループサウンドはloops指定のほうがよさそう?

この辺、毎度毎度悩み、
一番BESTなやり方が見出せていない orz
Flash + Actionscript 3.0にてループサウンドの実装について。

そもそも僕的には、Flashにて、ループサウンドの実装は、

タイムラインサウンド
+
同期設定で繰り返しをループまたは回数指定
+
効果設定でカスタムを選択し
+
エンペロープの編集(波形のやつ)でサウンドの頭とお尻のタイミングを設定する

一番綺麗にロープをつなぐなら、これじゃなきゃダメじゃね?と思っている。

しかして、Actionscript3.0で、
タイムラインサウンドの音量調整は可能だが
サウンドを停止する方法がなく、、
他の方法をとることを余儀なくされる。

ということで、他の方法でどうしたらいいのか。

前提として、、、

スクリプトで実装する場合、無音部分の自動除去は無理なので
きっちりループしている素材を用意すること。
また、非圧縮素材(WaveやAiffなど)であることが無難。

素材がmp3の場合、SWFパブリッシュ時に再びMP3圧縮がかかる?気がして
もと素材mp3では正常にループしていても書出後、
おかしくなることがある気がするので。
※mp3外部読み込みならよさそうかもね?
(この辺あいまい;調査せねば…)

素材が悪いのか、オデがわるいのか、
サウンドデザイナさんに迷惑かけないよう、素材はSoundBoothなどで確認しる。

そして実装、、、

progression nium先輩のエントリ
blog.nium.jp : AS3でSoundをループさせる
にあるように、サウンドの終了イベントをハンドリングし、
再び再生というやり方。

もう一つは、Sound.play の 第二引数に loops:int があるので
Sound.play(0,Int.MAX_VALUE) と指定する
可能最大値がわからんが、

Int.MAX_VALUE = 2147483647

を指定しても問題ない。

で、実際2つをやってみたところ、ループのつながり具合は

loops指定 > イベントハンドリング

となり、イベントをハンドリングして再び再生のほうは
つながりがちょっとぎこちない感じだった。

といって、loops指定のほうもベストとは言えず
他の方法ないんかいって感じです…。

ちょっと未確認だが、
Waveサウンドを外部読込する方法ってのがあるみたい。
これだといい感じなのかなぁ?

memo.kappa-lab.com: AS3でwavをループ再生(要POPFORGE)