home > 投稿 > MovieClipに境界線をつけちゃうフィルタ
2007/04/16

MovieClipに境界線をつけちゃうフィルタ


お初です。

Flash8から様々なフィルタ効果を扱えるようになりましたが、
フィルタを通じて境界線を設定する方法を紹介します。
派手じゃありませんが、地味に便利かなぁとか思ってます。

境界線の設定は、Photoshop ならば、
[レイヤースタイル] → [境界線] と簡単にできちゃうのですが、
Flash の場合は、[MCを選択] → [フィルタ] → [グロー] → [強度1000%] とするとそれっぽく見えます。
このとき、ぼかしの量をいじることで境界線の幅を設定できます。

で、この作業を ActionScript からいじれるようにクラス化してみました。
(オーサリング上の設定には限界がありました)
サンプルをどうぞ。



右側は Photoshop で作った画像です。
左側は ActionScript から境界線を設定しています(テキスト選択できます)。
さらに動的に色を変化させています。
比べると僅かな違いはありますが、実用には十分かなと思っています(ダメっすかね?)。

使う際はこんな感じです。


var bf:BorderFilter = new BorderFilter(0xFF0000, 2); // 赤色で2ピクセルの境界線
text_mc.filters = [bf]; // MCに設定

他のフィルタ同様に動的に設定を変えることもできます。
flash.filters.GlowFilter を継承したフィルタなので、
スーパークラスのプロパティもいじれます。


var bf:BorderFilter = new BorderFilter(0xFF0000, 2);
text_mc.filters = [bf];
text_mc.onEnterFrame = function(){
bf.width += 1; // 徐々に境界線の幅を大きく
// bf.color で色も変えれます
this.filters = [bf];
}


最後にこのクラスのソースです。
境界線の幅は GlowFilter のぼかし量と対応させていて、
また強度も幅に関連させています。
BorderFilter.as


なお、オーサリング上では強度の上限が1000%となっていますが、
これは AS だと GlowFilter.strength = 10 に相当しているようで、
256 * (1000/10) = 25600%まで設定できますね。

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/537

コメント一覧

オーサリングのグロー設定にて境界線はよく作るのですが scriptなら25600%まで設定できるのは知りませんでした。 やっぱりものすごく濃くなるのでしょうかw
お。ついにブログですか。
>halさん ASで25600%まで高めてみましたが、3000~4000%とそれほど違いは見れませんでした。。。パキっと感はあるんですけどね。 ちなみにクラスでは、strength を境界線の幅X1000%として表現してて、例えば2pxの境界線の場合は強度2000%となります。サンプルで試しましたがPhotoshopのと比べるとなぜかこんな公式でした。 3pxなら3000%、4pxなら4000%、とこれはオーサリング上では設定できないんですよね。
なるほど、よい公式を覚えることができました。 さらに太い線の場合、二回グローでくるむのはどうでしょうか!
私も今の今まで知りませんでしたが、オーサリングでも25500%まで入力できました。UIのボタンだと1000%までしかいかないんですけどね。直接入力だとOKでした。なんだこの仕様。 http://www.geocities.jp/yokiimage/faces/mojimoji.gif
>halさん オーサリングで設定できるとは気づきませんでした。。。マジでなんなんですかねこの仕様。これだともうグロー2回する必要なくなりますね。

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)