パッケージ | flash.filters |
クラス | public class ShaderFilter |
継承 | ShaderFilter BitmapFilter Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
新しいフィルターを作成するには、コンストラクター new ShaderFilter()
を使用します。フィルターの使用方法は、フィルターの適用先オブジェクトによって異なります。
- ムービークリップ、テキストフィールド、ボタン、およびビデオにフィルターを適用する場合は、DisplayObject から継承した
filters
プロパティを使用します。オブジェクトのfilters
プロパティを設定しても、オブジェクトは変更されません。filters
プロパティをクリアすることにより、フィルターを取り消すことができます。 - BitmapData オブジェクトにフィルターを適用するには、
BitmapData.applyFilter()
メソッドを使用します。BitmapData オブジェクトでapplyFilter()
を呼び出すことによって、ソース BitmapData オブジェクトとフィルターオブジェクトが取得され、フィルターを適用したイメージが生成されます。
表示オブジェクトにフィルターを適用すると、オブジェクトの cacheAsBitmap
プロパティの値が true に設定されます。すべてのフィルターを削除すると、cacheAsBitmap
の元の値が復元されます。
このフィルターはステージの拡大 / 縮小に対応していますが、 通常の拡大 / 縮小、回転、傾斜には対応していません。オブジェクト自体が拡大 / 縮小される場合(scaleX
と scaleY
プロパティが 100% に設定されていない場合)、フィルターは拡大 / 縮小されません。フィルターが拡大 / 縮小されるのは、ユーザーがステージをズームインする場合のみです。
結果として得られるイメージが最大サイズを超えると、フィルターは適用されません。AIR 1.5 および Flash Player 10 における最大サイズは、幅または高さが 8,191 ピクセルで、合計のピクセル数は 16,777,215 ピクセルを超えないようにしてください(つまり、幅が 8,191 ピクセルのイメージでは、高さが 2,048 ピクセルになります)。Flash Player 9 以前および AIR 1.1 以前では、高さの限界は 2,880 ピクセルで幅の限界は 2,880 ピクセルです。 例えば、フィルターが適用されたサイズの大きいムービークリップをズームインするとき、結果として得られるイメージが最大サイズを超える場合は、フィルターがオフになります。
フィルターで使用する Shader インスタンスを指定するには、Shader インスタンスを ShaderFilter()
コンストラクターに対する引数として渡すか、shader
プロパティの値として設定します。
シェーダー出力にフィルターが適用されたオブジェクトの境界を超える拡張を許可するには、leftExtension
、rightExtension
、topExtension
および bottomExtension
プロパティを使用します。
関連する API エレメント
flash.display.DisplayObject.cacheAsBitmap
flash.display.BitmapData.applyFilter()
flash.display.Shader
プロパティ | 定義元 | ||
---|---|---|---|
bottomExtension : int
ターゲットオブジェクトの下部でピクセルを増加します。 | ShaderFilter | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
leftExtension : int
ターゲットオブジェクトの左側でピクセルを増加します。 | ShaderFilter | ||
rightExtension : int
ターゲットオブジェクトの右側でピクセルを増加します。 | ShaderFilter | ||
shader : Shader
このフィルターに使用するシェーダーです。 | ShaderFilter | ||
topExtension : int
ターゲットオブジェクトの上部でピクセルを増加します。 | ShaderFilter |
メソッド | 定義元 | ||
---|---|---|---|
ShaderFilter(shader:Shader = null)
新しいシェーダーフィルターを作成します。 | ShaderFilter | ||
元の BitmapFilter オブジェクトとまったく同じコピーである BitmapFilter オブジェクトを返します。 | BitmapFilter | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
bottomExtension | プロパティ |
bottomExtension:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ターゲットオブジェクトの下部でピクセルを増加します。
実行中にシェーダーに渡されるターゲットオブジェクトの境界を超えた領域に増加します。実行時に、Flash Player または AIR は、ムービークリップの通常の境界を計算し、leftExtension
、rightExtension
、topExtension
、および bottomExtension
の値に基づいて境界を拡張します。
デフォルト値: 0。
実装
public function get bottomExtension():int
public function set bottomExtension(value:int):void
leftExtension | プロパティ |
leftExtension:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ターゲットオブジェクトの左側でピクセルを増加します。
実行中にシェーダーに渡されるターゲットオブジェクトの境界を超えた領域に増加します。実行時に、Flash Player または AIR は、ムービークリップの通常の境界を計算し、leftExtension
、rightExtension
、topExtension
、および bottomExtension
の値に基づいて境界を拡張します。
デフォルト値: 0。
実装
public function get leftExtension():int
public function set leftExtension(value:int):void
rightExtension | プロパティ |
rightExtension:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ターゲットオブジェクトの右側でピクセルを増加します。
実行中にシェーダーに渡されるターゲットオブジェクトの境界を超えた領域に増加します。実行時に、Flash Player または AIR は、ムービークリップの通常の境界を計算し、leftExtension
、rightExtension
、topExtension
、および bottomExtension
の値に基づいて境界を拡張します。
デフォルト値: 0。
実装
public function get rightExtension():int
public function set rightExtension(value:int):void
shader | プロパティ |
shader:Shader
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
このフィルターに使用するシェーダーです。
shader
プロパティに割り当てられたシェーダーでは、少なくとも 1 つの image4
入力を指定する必要があります。入力は、関連付けられた ShaderInput オブジェクトの input
プロパティを使用してコードで指定される必要はありません。代わりに、フィルターが適用されるオブジェクトが、最初の入力として自動的に使用されます(index
0 で入力)。フィルターとして使用されるシェーダーは、複数の入力を指定できます。この場合、追加の入力は、ShaderInput インスタンスの input
プロパティを設定して指定される必要があります。
Shader インスタンスをこのプロパティに割り当てる場合、シェーダーは内部的にコピーされ、フィルター処理には元のシェーダーへの参照ではなく、この内部コピーが使用されます。パラメーター値、入力またはバイトコードの変更などシェーダーに加えられた変更は、フィルターに使用されるシェーダーのコピーには適用されません。シェーダーの変更がフィルター出力で考慮されるようにするには、Shader インスタンスを shader
プロパティに割り当て直す必要があります。 また、すべてのフィルターと同様、フィルターの変更を適用するには、表示オブジェクトの filters
プロパティに ShaderFilter インスタンスを割り当て直す必要があります。
実装
public function get shader():Shader
public function set shader(value:Shader):void
topExtension | プロパティ |
topExtension:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ターゲットオブジェクトの上部でピクセルを増加します。
実行中にシェーダーに渡されるターゲットオブジェクトの境界を超えた領域に増加します。実行時に、Flash Player または AIR は、ムービークリップの通常の境界を計算し、leftExtension
、rightExtension
、topExtension
、および bottomExtension
の値に基づいて境界を拡張します。
デフォルト値: 0。
実装
public function get topExtension():int
public function set topExtension(value:int):void
ShaderFilter | () | コンストラクター |
shader
プロパティとして使用します。このコードは、Sprite インスタンスに円を描画してステージに追加します。シェーダーをロードすると、その Sprite にシェーダーフィルターが適用されます。
この例では、アプリケーションに対する出力ディレクトリとして、同じディレクトリに「gradient.pbj」という名前のシェーダーバイトコードファイルがあると想定しています。
// // Source code for the shader: // <languageVersion : 1.0;> kernel RedGradientFilter < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "Applies a gradient across the red channel of the input image."; > { input image4 src; output pixel4 dst; parameter float width < description: "The width of the image to which the shader is applied."; minValue: 0.0; >; void evaluatePixel() { pixel4 temp = sampleNearest(src, outCoord()); temp.r = 1.0 - (outCoord().x * (1.0 / width)); dst = temp; } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.filters.ShaderFilter; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderFilterExample extends Sprite { private var loader:URLLoader; private var s:Sprite; public function ShaderFilterExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("gradient.pbj")); s = new Sprite(); s.graphics.beginFill(0x009900); s.graphics.drawCircle(100, 100, 100); addChild(s); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(loader.data); shader.data.width.value = [s.width]; var gradientFilter:ShaderFilter = new ShaderFilter(shader); s.filters = [gradientFilter]; } } }
Tue Jun 12 2018, 10:34 AM Z