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 <256*2; i=i+9) { a=byte2_array.readFloat()*2; obj1.scaleZ=a; } } catch (e) { //残念賞 } }
はい。すみません。回避はできません。
なのでtryでくくって落ちても気にしない方向でいきます。
(kani君ありがとう)