パッケージflash.filters
クラスpublic class ShaderFilter
継承ShaderFilter Inheritance BitmapFilter Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

ShaderFilter クラスは、フィルタ処理されるオブジェクトにシェーダを実行することによってフィルタを適用します。フィルタ処理されたオブジェクトは、シェーダへの入力として使用され、シェーダ出力がフィルタ結果になります。

新しいフィルタを作成するには、コンストラクタ new ShaderFilter() を使用します。フィルタの使用方法は、フィルタの適用先オブジェクトによって異なります。

表示オブジェクトにフィルタを適用すると、オブジェクトの cacheAsBitmap プロパティの値が true に設定されます。すべてのフィルタを削除すると、cacheAsBitmap の元の値が復元されます。

このフィルタはステージの拡大 / 縮小に対応していますが、通常の拡大 / 縮小、回転、傾斜には対応していません。オブジェクト自体が拡大 / 縮小される場合(scaleXscaleY プロパティが 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 プロパティの値として設定します。

フィルタが適用されたオブジェクトの境界を超える拡張をシェーダ出力に許可するには、leftExtensionrightExtensiontopExtension および bottomExtension プロパティを使用します。

例を表示

関連項目

flash.display.DisplayObject.filters
flash.display.DisplayObject.cacheAsBitmap
flash.display.BitmapData.applyFilter()
flash.display.Shader


パブリックプロパティ
 プロパティ定義元
  bottomExtension : int
ターゲットオブジェクトの下部でピクセルを増加します。
ShaderFilter
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  leftExtension : int
ターゲットオブジェクトの左側でピクセルを増加します。
ShaderFilter
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  rightExtension : int
ターゲットオブジェクトの右側でピクセルを増加します。
ShaderFilter
  shader : Shader
このフィルタに使用するシェーダです。
ShaderFilter
  topExtension : int
ターゲットオブジェクトの上部でピクセルを増加します。
ShaderFilter
パブリックメソッド
 メソッド定義元
  
ShaderFilter(shader:Shader = null)
新しいシェーダフィルタを作成します。
ShaderFilter
 Inherited
元の BitmapFilter オブジェクトとまったく同じコピーである BitmapFilter オブジェクトを返します。
BitmapFilter
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
bottomExtensionプロパティ
bottomExtension:int

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

ターゲットオブジェクトの下部でピクセルを増加します。

実行中にシェーダに渡されるターゲットオブジェクトの境界を超えた領域に増加します。実行時に、Flash Player または AIR は、ムービークリップの通常の境界を計算し、leftExtensionrightExtensiontopExtension および 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 は、ムービークリップの通常の境界を計算し、leftExtensionrightExtensiontopExtension および 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 は、ムービークリップの通常の境界を計算し、leftExtensionrightExtensiontopExtension および 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 インスタンスをこのプロパティに割り当てる場合、シェーダは内部的にコピーされ、フィルタ処理には元のシェーダへの参照ではなく、この内部コピーが使用されます。パラメータ値、入力またはバイトコードの変更などシェーダに加えられた変更は、フィルタに使用されるシェーダのコピーには適用されません。シェーダの変更がフィルタ出力で考慮されるようにするには、 インスタンスを shadershader プロパティに割り当て直す必要があります。フィルタの変更内容を適用するには、すべてのフィルタと同様に、ShaderFilter インスタンスを表示オブジェクトのfilters プロパティに再度割り当てる必要があります。



実装
    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 は、ムービークリップの通常の境界を計算し、leftExtensionrightExtensiontopExtension および bottomExtension の値に基づいて境界を拡張します。

デフォルト値 : 0.



実装
    public function get topExtension():int
    public function set topExtension(value:int):void
コンストラクタの詳細
ShaderFilter()コンストラクタ
public function ShaderFilter(shader:Shader = null)

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

新しいシェーダフィルタを作成します。

パラメータ
shader:Shader (default = null) — このフィルタに使用するシェーダです。シェーダが従う必要のある詳細と制限については、shader プロパティの説明を参照してください。

関連項目

例の使用法
ShaderFilterExample.1.as

次の例では、シェーダを読み込み、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];
        }
    }
}




 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/filters/ShaderFilter.html