SWF8 のフィルタエフェクトについて
SWF8 では、フィルタやブレンドといった機能を使用することができます。
ここでは、フィルタエフェクトを使用する方法を説明します。
■「イベントのプロパティ」(「キーフレーム編集枠」)から設定する
ParaFla! では「イベントのプロパティ」にある「詳」ボタンから、
Suzuka では「キーフレーム編集枠」の「カラー」タブにある「フィルタ」ボタンから、フィルタを設定することができます。
(「カラーの変化」は SWF8 でなくても使用することができます。)
ParaFla! では、以下のようなダイアログが出ます。
「カラーの変化」
数値を変更すると、アイテムの色を変えることができます。
ただし、この設定をすると輝度、不透明度の設定が無効になります。
「R」は赤色の成分、「G」は緑色の成分、「B」は青色の成分、「アルファ」は透明度の成分です。
上記の画像で、[ 1 ]と入力されているボックスの列は、「色の割合」を指定するボックスです。
その画像に含まれている色の割合を増やしたり減らしたりできます。 -100〜100 の間で指定します。
[ 0 ]と入力されているボックスの列は、「追加する色(オフセット)」を指定するボックスです。
その画像に含まれている色に、更に追加で色の成分を加えます。 -255〜255 の間で指定します。
「ドロップシャドー、ブラー、グロー、ベベル」
フィルタエフェクト [?] です。
DropShadowFiletr(ドロップシャドー)は影効果、BlurFilter(ブラー)はぼかし効果、
GlowFilter(グロー)は光効果、BevelFilter(ベベル)は立体的効果を作成します。
以下は、サンプルです。
フィルタは便利ですが、大量に使用すると表示の処理が重くなったり、メモリを大量に消費してしまうので注意してください。
メモリが足りなくなるとフィルタの適用は自動的に解除されます。
ちなみに、ブラーフィルタの場合 X ぼかしと Y ぼかしの値に 2 の乗数(2、4、8、16、32、…)を使用すると計算処理が 20% 〜 30% 速くなるそうです。
「カラーマトリクス」
「カラーの変化」よりも更に詳細な色の設定を行います。
プリセットの設定として、「ノーマル」「モノクロ」「セピア」が用意されています。
「セピア」は回想シーン風に、「モノクロ」は白黒画面になります。元の色合いに戻すときは「ノーマル」を指定します。
ParaFla! の場合、これらの詳細設定エフェクトは「描画位置」と「移動先」の両方に設定できます。
Suzuka の場合、これらの詳細設定エフェクトはキーフレームごとに設定できます。
それぞれの値を変えて設定すれば、フィルタエフェクトの効果が徐々に変化していく様子が表現できます。
■ ActionScript で設定する
ActionScript でもフィルタは設定できます。
プロパティの変数に値を代入することで、ParaFla! や Suzuka でフィルタを設定するときの設定項目と同じように、フィルタ設定をすることができます。
//■ドロップシャドーフィルタ
var filtarget = _root.pic; //フィルタを適用したいスプライトのターゲット。
var filparam = new flash.filters.DropShadowFilter();
filparam.color = 0x000000; //影の色
filparam.alpha = 1; //不透明度(0〜1で指定。0.5とすると50%になる。)
filparam.blurX = 2; //Xぼかし(0〜255)
filparam.blurY = 2; //Yぼかし(0〜255)
filparam.angle = 45; //角度
filparam.distance = 5; //距離
filparam.quality = 2; //品質(0〜30)
filparam.strength = 1; //強さ
filparam.inner = false; //true: 内側 / false: 外側
filparam.knockout = false; //ノックアウト効果の true / false
filparam.hideObject = false; //オブジェクト非表示の true / false
filtarget.filters = new Array(filparam);
//■ブラーフィルタ
var filtarget = _root.pic; //フィルタを適用したいスプライトのターゲット。
var filparam = new flash.filters.BlurFilter();
filparam.blurX = 4; //Xぼかし(0〜255)
filparam.blurY = 4; //Yぼかし(0〜255)
filparam.quality = 2; //品質(0〜30)
filtarget.filters = new Array(filparam);
//■グローフィルタ
var filtarget = _root.pic; //フィルタを適用したいスプライトのターゲット。
var filparam = new flash.filters.GlowFilter();
filparam.color = 0xffff00; //光の色
filparam.alpha = 1; //不透明度(0〜1で指定。0.5とすると50%になる。)
filparam.blurX = 10; //Xぼかし(0〜255)
filparam.blurY = 10; //Yぼかし(0〜255)
filparam.quality = 2; //品質(0〜30)
filparam.strength = 1; //強さ
filparam.knockout = false; //ノックアウト効果の true / false
filparam.inner = false; //true: 内側 / false: 外側
filtarget.filters = new Array(filparam);
//■ベベルフィルタ
var filtarget = _root.pic; //フィルタを適用したいスプライトのターゲット。
var filparam = new flash.filters.BevelFilter();
filparam.highlightAlpha = 1; //ハイライトの不透明度(0〜1で指定。0.5とすると50%になる。)
filparam.highlightColor = 0xffffff; //ハイライトの色
filparam.shadowAlpha = 1; //影の不透明度(0〜1で指定。0.5とすると50%になる。)
filparam.shadowColor = 0x000000; //影の色
filparam.blurX = 2; //Xぼかし(0〜255)
filparam.blurY = 2; //Yぼかし(0〜255)
filparam.angle = 45; //角度
filparam.distance = 5; //距離
filparam.quality = 2; //品質(0〜30)
filparam.strength = 1; //強さ
filparam.knockout = false; //ノックアウト効果の true / false
filparam.type = "outer"; //種類 inner: 内側 / outer: 外側 / full: 両方
filtarget.filters = new Array(filparam);
複数のフィルタを適用したい場合、最後の行で行う代入を配列にすればいいようです。
//ブラーフィルタとドロップシャドーフィルタを適用
var filtarget = _root.pic; //フィルタを適用したいスプライトのターゲット。
var filparam1 = new flash.filters.BlurFilter();
〜(略)〜
var filparam2 = new flash.filters.DropShadowFilter();
〜(略)〜
filtarget.filters = [filparam1, filparam2];
「カラーの変化」、「カラーマトリクス」も ActionScript で設定可能ですが、ここでは説明を割愛します。
詳しくはFlashゲーム講座 & アクションスクリプトサンプル集【カラーについて】が参考になります。