| パッケージ | flash.filters |
| クラス | public class ConvolutionFilter |
| 継承 | ConvolutionFilter BitmapFilter Object |
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
畳み込みフィルタを作成するには、シンタックス new ConvolutionFilter() を使用します。フィルタの使用方法は、フィルタの適用先オブジェクトによって異なります。
filters プロパティを使用します。オブジェクトの filters プロパティを設定しても、オブジェクトは変更されません。filters プロパティをクリアすることにより、フィルタを取り消すことができます。 BitmapData.applyFilter() メソッドを使用します。BitmapData オブジェクトで applyFilter() を呼び出すことによって、ソース BitmapData オブジェクトとフィルタオブジェクトが取得され、フィルタを適用したイメージが生成されます。表示オブジェクトにフィルタを適用すると、オブジェクトの cacheAsBitmap プロパティの値が true に設定されます。すべてのフィルタをクリアすると、cacheAsBitmap は元の値に戻ります。
結果として得られるイメージの幅または高さが 2880 ピクセルを超える場合、フィルタは適用されません。たとえば、フィルタが適用されたサイズの大きいムービークリップをズームインするとき、結果として得られるイメージが 2880 ピクセルの制限を超える場合は、フィルタがオフになります。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| alpha : Number
代替カラーのアルファ透明度の値です。
| ConvolutionFilter | ||
| bias : Number
マトリックス変換の結果に加算するバイアス量です。
| ConvolutionFilter | ||
| clamp : Boolean
イメージをクランプする必要があるかどうかを示します。
| ConvolutionFilter | ||
| color : uint
ソースイメージの外にあるピクセルを置換する 16 進数のカラー値です。
| ConvolutionFilter | ||
![]() | constructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | |
| divisor : Number
マトリックス変換中に使用する除数です。
| ConvolutionFilter | ||
| matrix : Array
マトリックス変換に使用する値の配列です。
| ConvolutionFilter | ||
| matrixX : Number
マトリックスの x 次元 (マトリックスの列数) です。
| ConvolutionFilter | ||
| matrixY : Number
マトリックスの y 次元 (マトリックスの行数) です。
| ConvolutionFilter | ||
| preserveAlpha : Boolean
アルファチャンネルをフィルタ効果なしで維持するかどうか、またはカラーチャンネルだけではなく、アルファチャンネルにも畳み込みフィルタを適用するかどうかを示します。
| ConvolutionFilter | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| メソッド | 定義元 | ||
|---|---|---|---|
|
ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
指定されたパラメータで ConvolutionFilter インスタンスを初期化します。
| ConvolutionFilter | ||
|
このフィルタオブジェクトのコピーを返します。
| ConvolutionFilter | ||
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
![]() |
指定されたプロパティが存在し列挙できるかどうかを示します。
| Object | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。
| Object | |
| alpha | プロパティ |
alpha:Number [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
代替カラーのアルファ透明度の値です。指定できる値は 0 ~ 1.0 です。デフォルトは 0 です。たとえば、.25 を指定すると、透明度の値として 25% が設定されます。
public function get alpha():Number
public function set alpha(value:Number):void
| bias | プロパティ |
bias:Number [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
マトリックス変換の結果に加算するバイアス量です。バイアスにより各チャンネルのカラー値が増えるため、暗い色は明るくなります。デフォルト値は 0 です。
public function get bias():Number
public function set bias(value:Number):void
| clamp | プロパティ |
clamp:Boolean [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
イメージをクランプする必要があるかどうかを示します。true の場合、ソースイメージの外にあるピクセルに対して、入力イメージの各エッジのカラー値を複製するという方法で、必要に応じて境界に沿って入力イメージを拡張します。false の場合は、別の色を使用します。その色は color プロパティと alpha プロパティで指定します。デフォルト値は true です。
public function get clamp():Boolean
public function set clamp(value:Boolean):void
BitmapData クラスを使用してボックスを 1 つと、これよりも半分のサイズのボックスを 1 つ、合計 2 つのボックスを作成します。サンプルが最初に読み込まれると、大きいほうのボックスが、mc の内部に attachBitmap() を使用して描画されます。mc をクリックして、applyFilter() メソッドが呼び出されると、largeBox インスタンス (BitmapData) が smallBox でソースビットマップとして再描画されます。applyFilter() では、smallBox を Rectangle 上に描画します。その幅と高さは largeBox の幅と高さに指定されているため、ソースビットマップは描画領域より小さくなります。この場合、clamp プロパティ (ConvolutionFilter) は false に設定されます。ソースビットマップの範囲内にない領域 smallBox は、clampColor 変数および clampAlpha 変数で決まる不透明の赤色です。
package {
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.filters.ConvolutionFilter;
import flash.text.TextField;
import flash.geom.Rectangle;
import flash.geom.Point;
public class ConvolutionClampExample extends Sprite {
// Variables that affect clamping:
var clamp:Boolean = false;
var clampColor:Number = 0xFF0000;
var clampAlpha:Number = 1;
// For illustration, keep other ConvolutionFilter variables neutral:
var bias:Number = 0;
var preserveAlpha:Boolean = false;
// Also, construct a neutral matrix
var matrixCols:Number = 3;
var matrixRows:Number = 3;
var matrix:Array = [ 1,1,1,
1,1,1,
1,1,1 ];
var filter:ConvolutionFilter = new ConvolutionFilter(matrixCols, matrixRows, matrix, matrix.length, bias, preserveAlpha, clamp, clampColor, clampAlpha);
var largeBoxWidth:Number = 100;
var largeBoxHeight:Number = 100;
var largeBox:BitmapData = new BitmapData(largeBoxWidth, largeBoxWidth, true, 0xCC00FF00);
var smallBoxWidth:Number = largeBoxWidth / 2;
var smallBoxHeight:Number = largeBoxHeight / 2;
var smallBox:BitmapData = new BitmapData(smallBoxWidth, smallBoxWidth, true, 0xCC0000FF);
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap(largeBox, this.getNextHighestDepth());
mc.onPress = function() {
largeBox.applyFilter(smallBox,
new Rectangle(0,0, largeBoxWidth, largeBoxHeight),
new Point(0,0),
filter);
}
}
}| color | プロパティ |
color:uint [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
ソースイメージの外にあるピクセルを置換する 16 進数のカラー値です。これはアルファ成分なしの RGB 値です。デフォルトは 0 です。
public function get color():uint
public function set color(value:uint):void
| divisor | プロパティ |
divisor:Number [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
マトリックス変換中に使用する除数です。デフォルト値は 1 です。序数がすべてのマトリックス値の合計と等しい場合は、結果全体のカラー強度が均等化されます。値 0 は無視し、代わりにデフォルト値を使用します。
public function get divisor():Number
public function set divisor(value:Number):void
| matrix | プロパティ |
matrix:Array [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
マトリックス変換に使用する値の配列です。この配列に含まれる項目数は必ず matrixX * matrixY に等しくなります。
マトリックスの畳み込みは、n x m マトリックスに基づいています。入力イメージ内の特定のピクセルを隣接するピクセルと組み合わせるという方法で、新しいピクセル値を生成します。結果として得られるピクセルは、対応するソースピクセルおよび隣接するピクセルにマトリックスを適用することで算出されます。
3 × 3 のマトリックス畳み込みの場合、独立するカラーチャンネルごとに次の式を使用します。
dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1....
src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias
SSE (Streaming SIMD Extensions : ストリーミング SIMD 拡張) を提供するプロセッサで実行するときに処理が高速化されるフィルタ仕様もあります。畳み込み操作が高速化される基準は次のとおりです。
メモ : パラメータなしのコンストラクタを使用して ConvolutionFilter インスタンスを作成する場合は、値をマトリックスプロパティに割り当てる順序がフィルタの動作に影響します。次の例では、マトリックス配列に割り当てを行い、matrixX および matrixY プロパティは 0 (デフォルト値) に設定したままです。
public var myfilter:ConvolutionFilter = new ConvolutionFilter();
myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
myfilter.matrixX = 3;
myfilter.matrixY = 3;
次の例では、マトリックス配列に割り当てを行い、matrixX および matrixY プロパティを 3 に設定します。
public var myfilter:ConvolutionFilter = new ConvolutionFilter();
myfilter.matrixX = 3;
myfilter.matrixY = 3;
myfilter.matrix = [0, 0, 0, 0, 1, 0, 0, 0, 0];
public function get matrix():Array
public function set matrix(value:Array):void
TypeError — 配列は、設定時に null に設定されます。
|
| matrixX | プロパティ |
matrixX:Number [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
マトリックスの x 次元 (マトリックスの列数) です。デフォルト値は 0 です。
public function get matrixX():Number
public function set matrixX(value:Number):void
| matrixY | プロパティ |
matrixY:Number [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
マトリックスの y 次元 (マトリックスの行数) です。デフォルト値は 0 です。
public function get matrixY():Number
public function set matrixY(value:Number):void
| preserveAlpha | プロパティ |
preserveAlpha:Boolean [read-write]
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
アルファチャンネルをフィルタ効果なしで維持するかどうか、またはカラーチャンネルだけではなく、アルファチャンネルにも畳み込みフィルタを適用するかどうかを示します。false である場合は、アルファチャンネルを含め、すべてのチャンネルに畳み込みを適用します。true である場合は、畳み込みをカラーチャンネルだけに適用します。デフォルト値は true です。
public function get preserveAlpha():Boolean
public function set preserveAlpha(value:Boolean):void
| ConvolutionFilter | () | コンストラクタ |
public function ConvolutionFilter(matrixX:Number = 0, matrixY:Number = 0, matrix:Array = null, divisor:Number = 1.0, bias:Number = 0.0, preserveAlpha:Boolean = true, clamp:Boolean = true, color:uint = 0, alpha:Number = 0.0)
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
指定されたパラメータで ConvolutionFilter インスタンスを初期化します。
パラメータmatrixX:Number (default = 0) — マトリックスの x 次元 (マトリックスの列数) です。デフォルト値は 0 です。
|
|
matrixY:Number (default = 0) — マトリックスの y 次元 (マトリックスの行数) です。デフォルト値は 0 です。
|
|
matrix:Array (default = null) — マトリックス変換に使用する値の配列です。この配列に含まれる項目数は必ず matrixX * matrixY に等しくなります。
|
|
divisor:Number (default = 1.0) — マトリックス変換中に使用する除数です。デフォルト値は 1 です。除数がすべてのマトリックス値の合計と等しい場合は、結果全体のカラー強度が均等化されます。値 0 は無視し、代わりにデフォルト値を使用します。
|
|
bias:Number (default = 0.0) — マトリックス変換の結果に加算するバイアスです。デフォルト値は 0 です。
|
|
preserveAlpha:Boolean (default = true) — false である場合は、アルファ値が保持されず、アルファチャンネルを含め、すべてのチャンネルに畳み込みを適用します。true である場合は、畳み込みをカラーチャンネルだけに適用します。デフォルト値は true です。
|
|
clamp:Boolean (default = true) — true の場合、ソースイメージの外にあるピクセルに対して、入力イメージの所定のエッジのカラー値を複製するという方法で、必要に応じて境界に沿って入力イメージを拡張します。false の場合は、別の色を使用します。その色は color プロパティと alpha プロパティで指定します。デフォルト値は true です。
|
|
color:uint (default = 0) — ソースイメージの外にあるピクセルを置換する 16 進数のカラー値です。
|
|
alpha:Number (default = 0.0) — 代替カラーのアルファです。
|
| clone | () | メソッド |
public override function clone():BitmapFilter
| 言語バージョン : | ActionScript 3.0 |
| Player のバージョン : | Flash Player 9 |
このフィルタオブジェクトのコピーを返します。
戻り値BitmapFilter — 元の ConvolutionMatrixFilter インスタンスとプロパティがすべて同じである新しい ConvolutionFilter インスタンスです。
|
buildChild() を 4 回呼び出して、イメージの 4 つのインスタンスをロードして表示します。buildChild() を呼び出すたびに、最初のインスタンスにはフィルタを適用せず、異なる畳み込みフィルタをそれ以降のインスタンスに適用する関数を引数として取ります。
buildChild() 関数は loaderという名前の新しい Loader オブジェクトを作成します。buildChild() を呼び出すたびに、complete イベントを受け取るイベントリスナーを Loader オブジェクトにアタッチします。これらのイベントは buildChild() に渡される関数によって処理されます。
applyBrightness()、applySharpness()、および applyOutline() 関数は matrix 配列に対して異なる値を使用して、さまざまな ConvolutionFilter 効果を作り出します。
メモ : 幅が約 80 ピクセル以内のイメージを使用すると、最良の結果が得られます。イメージファイルの名前と場所は url プロパティに渡す値に一致する必要があります。たとえば、この例の url に渡す値は、SWF ファイルと同じディレクトリ内にある "Image.jpg" という名前のイメージファイルを指します。
package {
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.filters.BitmapFilter;
import flash.filters.ConvolutionFilter;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class ConvolutionFilterExample extends Sprite {
private var size:uint = 140;
private var url:String = "Image.jpg";
public function ConvolutionFilterExample() {
buildChild(applyNothing);
buildChild(applyBrightness);
buildChild(applySharpness);
buildChild(applyOutline);
}
private function buildChild(loadHandler:Function):void {
var loader:Loader = new Loader();
loader.x = numChildren * size;
loader.y = size;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
if(loadHandler != null) {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler);
}
var request:URLRequest = new URLRequest(url);
loader.load(request);
addChild(loader);
}
private function applyNothing(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
applyLabel(child, "no filter");
}
private function applyBrightness(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = [5, 5, 5,
5, 0, 5,
5, 5, 5];
applyFilter(child, matrix);
applyLabel(child, "brightness");
}
private function applySharpness(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = [0, -1, 0,
-1, 20, -1,
0, -1, 0];
applyFilter(child, matrix);
applyLabel(child, "sharpness");
}
private function applyOutline(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = [-30, 30, 0,
-30, 30, 0,
-30, 30, 0];
applyFilter(child, matrix);
applyLabel(child, "outline");
}
private function applyFilter(child:DisplayObject, matrix:Array):void {
var matrixX:Number = 3;
var matrixY:Number = 3;
var divisor:Number = 9;
var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor);
var filters:Array = new Array();
filters.push(filter);
child.filters = filters;
}
private function applyLabel(child:DisplayObject, label:String):void {
var tf:TextField = new TextField();
tf.x = child.x;
tf.y = child.height;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = label;
addChild(tf);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("Unable to load image: " + url);
}
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/filters/ConvolutionFilter.html