Flash CS3 ドキュメンテーション |
|||
| ActionScript 2.0 リファレンスガイド > ActionScript クラス > ColorMatrixFilter (flash.filters.ColorMatrixFilter) | |||
Object
|
+-BitmapFilter
|
+-flash.filters.ColorMatrixFilter
public class ColorMatrixFilter
extends BitmapFilter
ColorMatrixFilter クラスを使用すると、入力イメージの各ピクセルの RGBA カラー値とアルファ値に 4 x 5 マトリックス変換を適用することで、新しい RGBA カラー値とアルファ値からなる結果を作成できます。これにより、彩度変更、色相回転、輝度アルファ変換など、各種効果を行うことができます。このフィルタは、ビットマップと MovieClip のインスタンスに適用できます。
フィルタの使い方は、フィルタの適用先オブジェクトによって異なります。
filters プロパティを使用します。オブジェクトの filters プロパティを設定してもオブジェクトは変更されません。また、filters プロパティをクリアすることで元に戻すことができます。BitmapData.applyFilter() メソッドを使用します。BitmapData オブジェクトで applyFilter() を呼び出すことによって、ソース BitmapData オブジェクトとフィルタオブジェクトが取得され、フィルタを適用した結果として得られるイメージが生成されます。イメージやビデオにもオーサリング時にフィルタ効果を適用できます。詳細については、オーサリングのマニュアルを参照してください。
ムービークリップやボタンにフィルタを適用する場合は、ムービークリップやボタンの cacheAsBitmap プロパティを true に設定します。すべてのフィルタをクリアすると、cacheAsBitmap は元の値に戻ります。
次の式が使用されます。ここで、a[0] ~ a[19] は 20 個の要素を持つ配列プロパティマトリックスのエントリ 0 ~ 19 に対応します。
redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4] greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9] blueResult = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14] alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19]
このフィルタにより、元の各ピクセルが赤、緑、青、アルファの各成分 (srcR、srcG、srcB、srcA) に分解されます。最後の手順で、カラー成分が 1 つのピクセルに再び結合され、結果が出力されます。
この計算は、乗算されていないカラー値に対して実行します。入力グラフィックが乗算済みカラー値で構成される場合は、この処理のために、乗算済みのカラー値が乗算されていないカラー値に自動的に変換されます。
次の 2 つの最適化モードを使用できます。
アルファのみ。ここに示すようにアルファ成分のみを調整するマトリックスをフィルタに渡すと、フィルタによりそのパフォーマンスが最適化されます。
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 N 0 (where N is between 0.0 and 1.0)
高速バージョン。Pentium 3 以降、Apple G4 以降など、SSE/Altivec アクセラレータ対応のプロセッサでのみ使用できます。アクセラレータは、乗数項の範囲が -15.99 ~ 15.99 で、加算項 [4]、a[9]、a[14]、および a[19] の範囲が -8000 ~ 8000 の場合に使用されます。
結果として得られるイメージの幅または高さが 2880 ピクセルを超える場合、フィルタは適用されません。たとえば、フィルタが適用されたサイズの大きいムービークリップをズームインするとき、結果として得られるイメージが 2880 ピクセルの制限に達する場合は、フィルタがオフになります。
対応バージョン : ActionScript 1.0、Flash Player 8
次の例では、BitmapFilter を使用して、マウスポインタの位置を基にイメージのカラーのサイズを操作します。ポインタを左上隅 (0,0) に置いた場合、イメージは変更されません。ポインタを右に移動するに従って、緑と青のチャンネルがともにイメージから削除されます。ポインタを下に移動するに従って、赤のチャンネルが削除されます。ポインタをステージの右下に置くと、イメージは完全な黒になります。この例では、リンケージ識別子が "YourImageLinkage" に設定されたイメージがライブラリにあると仮定しています。
import flash.filters.BitmapFilter;
import flash.filters.ColorMatrixFilter;
var image:MovieClip = this.attachMovie("YourImageLinkage", "YourImage", this.getNextHighestDepth());
image.cacheAsBitmap = true;
var listener:Object = new Object();
listener.image = image;
listener.onMouseMove = function() {
var xPercent:Number = 1 - (_xmouse/Stage.width);
var yPercent:Number = 1 - (_ymouse/Stage.height);
var matrix:Array = new Array();
matrix = matrix.concat([yPercent, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, xPercent, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, xPercent, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
var filter:BitmapFilter = new ColorMatrixFilter(matrix);
image.filters = new Array(filter);
}
Mouse.addListener(listener);
listener.onMouseMove();
getPixel (BitmapData.getPixel メソッド), applyFilter (BitmapData.applyFilter メソッド), filters (MovieClip.filters プロパティ), cacheAsBitmap (MovieClip.cacheAsBitmap プロパティ)
|
オプション |
プロパティ |
説明 |
|---|---|---|
|
|
4 x 5 カラー変換用の 20 エレメントの配列です。 |
Object クラスから継承されるプロパティ
|
constructor (Object.constructor プロパティ), __proto__ (Object.__proto__ プロパティ), prototype (Object.prototype プロパティ), __resolve (Object.__resolve プロパティ) |
|
署名 |
説明 |
|---|---|
|
ColorMatrixFilter |
指定されたパラメータで新しい ColorMatrixFilter インスタンスを初期化します。 |
|
オプション |
署名 |
説明 |
|---|---|---|
|
|
このフィルタオブジェクトのコピーを返します。 |
BitmapFilter クラスから継承されるメソッド
Object クラスから継承されるメソッド
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001531.html