| パッケージ | flash.filters |
| クラス | public class ShaderFilter |
| 継承 | ShaderFilter BitmapFilter Object |
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
新しいフィルタを作成するには、コンストラクタ new ShaderFilter() を使用します。フィルタの使用方法は、フィルタの適用先オブジェクトによって異なります。
filters プロパティを使用します。オブジェクトの filters プロパティを設定しても、オブジェクトは変更されません。filters プロパティをクリアすることにより、フィルタを取り消すことができます。BitmapData.applyFilter() メソッドを使用します。BitmapData オブジェクトで applyFilter() を呼び出すことによって、\'83\'5cース 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 プロパティを使用します。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| bottomExtension : int
ターゲットオブジェクトの下部でピクセルを増加します。 | ShaderFilter | ||
![]() | constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。 | Object | |
| leftExtension : int
ターゲットオブジェクトの左側でピクセルを増加します。 | ShaderFilter | ||
![]() | prototype : Object [静的]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。 | Object | |
| rightExtension : int
ターゲットオブジェクトの右側でピクセルを増加します。 | ShaderFilter | ||
| shader : Shader
このフィルタに使用するシェーダです。 | ShaderFilter | ||
| topExtension : int
ターゲットオブジェクトの上部でピクセルを増加します。 | ShaderFilter | ||
| メソッド | 定義元 | ||
|---|---|---|---|
新しいシェーダフィルタを作成します。 | ShaderFilter | ||
![]() |
元の BitmapFilter オブジェクトとまったく同じコピーである BitmapFilter オブジェクトを返します。 | BitmapFilter | |
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | 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 インスタンスをこのプロパティに割り当てる場合、シェーダは内部的にコピーされ、フィルタ処理には元のシェーダへの参照ではなく、この内部コピーが使用されます。パラメータ値、入力またはバイトコードの変更などシェーダに加えられた変更は、フィルタに使用されるシェーダのコピーには適用されません。シェーダの変更がフィルタ出力で考慮されるようにするには、 インスタンスを 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 は、ムービークリップの通常の境界を計算し、leftExtension、rightExtension、topExtension および 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 プロパティの説明を参照してください。
|
関連項目
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