グラデーション・マスク

グラデーション・マスクをかけてみる。 :boy:

BitmapDataクラスは使わないよ。
っていうか、使いこなせてないし。 :bouzu:

:caution: 要 Flash Player 8 以上


まず、かえる君の形のシェイプを描く。(frog)
次に、ムービークリップに frog を配置した。(mask)
また、ムービークリップに frog を配置して、
[修正]-[シェイプ]-[ソフトエッジ…]で、かえる君の形をぼかす。(softEdge)
それから、frog を書き出して、画像ソフトでブラーをかけて、
アルファチャンネルつきの画像に変換して読み込んだ。(blurImage)
ついでに、ムービークリップに frog を配置しておく。(blurMask)


This movie requires Flash Player 9.0.0


_root にムービークリップ(インスタンス名: base1_mc ~ base4_mc) を配置。
base_mc には、矩形のシェイプを描く。
ムービークリップ(インスタンス名: mask, sofrEdge, blurImage, blurMask) も配置。

_root 第1フレームに
base1_mc.setMask(mask);

base2_mc.setMask(softEdge);
base2_mc.cacheAsBitmap = true;
softEdge.cacheAsBitmap = true;


base3_mc.setMask(blurImage);
base3_mc.cacheAsBitmap = true;
blurImage.cacheAsBitmap = true;


base4_mc.setMask(blurMask);
base4_mc.cacheAsBitmap = true;
//blurMask.cacheAsBitmap = true;
import flash.filters.BlurFilter;
var blur:BlurFilter = new BlurFilter(10, 10, 3);
blurMask.filters = [blur];
と記述。


テキストフィールドを内包したムービークリップでも試してみる。

This movie requires Flash Player 9.0.0


_root にムービークリップ(インスタンス名: txt1_mc ~ txt4_mc) を配置。
txt_mc には、テキストフィールド(インスタンス名: str_txt) を配置。
str_txt は、ダイナミックテキスト(フォント “_ゴシック”) に指定。
ムービークリップ(インスタンス名: mask, sofrEdge, blurImage, blurMask) も配置。

_root 第1フレームに
txt1_mc.setMask(mask);
txt1_mc.cacheAsBitmap = true;
mask.cacheAsBitmap = true;


txt2_mc.setMask(softEdge);
txt2_mc.cacheAsBitmap = true;
softEdge.cacheAsBitmap = true;


txt3_mc.setMask(blurImage);
txt3_mc.cacheAsBitmap = true;
blurImage.cacheAsBitmap = true;


txt4_mc.setMask(blurMask);
txt4_mc.cacheAsBitmap = true;
//blurMask.cacheAsBitmap = true;
import flash.filters.BlurFilter;
var blur:BlurFilter = new BlurFilter(10, 10, 3);
blurMask.filters = [blur];
と記述。

ポイントは、やっぱり cacheAsBitmap なり。 :hakase:


[追記] (07/01/09 Tue 23:55)
裏技じゃないですよ。ヘルプにちゃんと書いてあったですよ。 :-o
アルファチャンネルマスクについて

アルファチャンネルマスクは、マスクとマスクされたムービークリップの両方でビットマップキャッシュが使用されている場合にサポートされます。このアルファチャンネルマスクのサポートにより、マスクされたムービークリップそのものに対して適用されるフィルタとは無関係に、マスクに対してフィルタを使用できます。
こっちは、知ってたんですけど。 :hakase:
フィルタ、キャッシュおよび MovieClip クラスの操作

ムービークリップにフィルタが関連付けられている場合、SWF ファイルのロード時に、透明なビットマップとしてムービークリップ自身をキャッシュするようにマークされます。ムービークリップに少なくとも1つのフィルタが適用されていれば、cacheAsBitmap プロパティが true となり、実行時にムービークリップがビットマップとしてキャッシュされます。