カテゴリー
Flash

ActionScript 3.0 SoundMixer.computeSpectrum はWindows/IEでloadmovieすると固まる バグ

ActionScript 3.0でサウンド波形を扱…

ActionScript 3.0でサウンド波形を扱うメソッド
このサイトでも使っているのですが、

http://event.67.org/gainer/

SoundMixer.computeSpectrum
「 現在のサウンド波形からスナップショットを取得し、指定した ByteArray オブジェクトに配置します。」
音のその瞬間の波形の振り幅を取得できます。

とてもイイ感じのメソッドなのですが、次の条件が重なった場合に強制終了します。

・Windows
・IE6/7 (ActiveX版のPlayer)
・SoundMixer.computeSpectrumを使用しているswfが読み込まれている場合

最後の条件がくせ者で、単独で走っている場合は問題ないのですが、別のswfに呼び込まれている場合にのみ、強制終了します。
また強制終了するまでの時間は、数秒から数十秒の幅があります。

これを回避するには

・単独のswfで終わらせるか
・SoundMixer.computeSpectrumに関する処理を読み込む側のswfで処理するか
・次のようなスクリプトで回避します

public function enterFrameHandler(event:Event):void {
 try {
  SoundMixer.computeSpectrum(byte1_array,true,0);
  for (var i=0; i 

はい。すみません。回避はできません。
なのでtryでくくって落ちても気にしない方向でいきます。

(kani君ありがとう)