いろいろと遊べそうなんだけど、把握しきれずにお決まりのゆらゆらとか球面拡大とか、
あと実験的な場でしか使いにくいDisplacementMapFilterについて整理してみます。

・ビットマップ周りの操作について。
このへんのBitmapにフィルタかける時にややこしいのが、BitmapDataとBitmapの違い。
BitmapDataはいじれたりして、Bitmapはステージにおけるものと考えていい。
表示する時にはBitmapDataをnew BitmapでくるんでaddChild。一度addChildすれば
中身のBitmapDataをいじっても反映されます。いろいろ端折るけどそんなもの。

・次にDisplacementMapFilterの扱い方。
DisplacementMapFilterはMCに直接かけることもできますが、このフィルタのウリは
だんだんと動いていく感じ(ですよね?)なので、いまフィルタをかけたものをさらにフィルタ
かけたいため、元の状態がそのままなMCじゃなくてBitmapDataにフィルタをかけ続ける
方法でいきます。絵をずっと描きかえていく感じ。

こんなの。
bmpd.applyFilter(bmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),dpmf);

引数の2番目3番目についてはまずはほぼ固定。4番目はフィルタのインスタンス、1番目
がなんでわざわざ指定すんの?ってとこだけど、とりあえずは同じものでOK。
他の処理でBitmapDataにいろいろ描いたものにフィルタかけたい場合なんかに使います。
photoshopだと選択範囲そのままでフィルタ結果を別レイヤーに出力する感じ。

肝心のDisplacementMapFilterはこんなの。
var f:DisplacementMapFilter = new DisplacementMapFilter(bmpd1, null,
BitmapDataChannel.BLUE,BitmapDataChannel.BLUE, 15,15,"color");

大事なのは引数の1番目(元になるビットマップデータ)と5,6番目。DisplacementMapFilterは
2枚のビットマップの差によって効果がでるので、フィルタ素材になるものを指定する。
5,6番目はフィルタ量。X方向とY方向。3,4番目がイマイチわかりにくいんだけど、ここは
同じものを指定するか、違うものにするかを注意すればいいと思う。

これでやってみるとこうなる。リンクでFlash開くよ。

だんだん消えてく。ちなみにDisplacementMapFilterの引数3,4番目を片方REDなんかにすれば
もっとぼけた感じで全部消えます。同じに設定した時と変えた時の効果の差を一応確認。
ただこのままだとなくなっちゃってるので、毎フレーム元絵を書き足してやるとこうなります。

applyFilterの後にdrawしてやる。

これはdrawする内容のMCが動いているので、常にdrawするタイミングの状態が描かれます。
drawする内容が常に変化するというのは演出上かなり使えるのでここ大事。
またここでは直接drawしてるので丸部分のエッジがはっきり見えるのでなんらかのフィルタ
処理をしたものをdrawする手もあります。あとはapplyFilterの前にdrawしてやるとか。

こうなる

次回はこのサンプルで気になる人は気になる部分をやります。

今回のソース

HTML5飯