| 套件 | flash.filters |
| 類別 | public class ShaderFilter |
| 繼承 | ShaderFilter BitmapFilter Object |
| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | Flash Player 10, AIR 1.5 |
若要建立新的濾鏡,請使用建構函數 new ShaderFilter()。濾鏡的使用取決於濾鏡套用到的物件:
- 若要將濾鏡套用至影片片段、文字欄位、按鈕與視訊,請使用
filters屬性 (從 DisplayObject 繼承而來)。 設定物件的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 像素。例如,當您在套用某個濾鏡的大型影片片段上進行放大顯示時,如果產生的影像超過最大尺寸,便會關閉該濾鏡。
若要指定要搭配濾鏡一起使用的 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):voidleftExtension | 屬性 |
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):voidrightExtension | 屬性 |
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):voidshader | 屬性 |
shader:Shader| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | Flash Player 10, AIR 1.5 |
要用於此濾鏡的著色器。
指派給 shader 屬性的 Shader 至少必須指定一個 image4 輸入。 此輸入不需要一定得使用關聯的 ShaderInput 物件之 input 屬性於程式碼中指定。反之,套用濾鏡的物件會被自動用來當成第一個輸入 (包含 index 0 的輸入)。 當作濾鏡使用的著色器可以指定一個以上的輸入,在此情況中,其他額外的輸入都必須藉由設定其 ShaderInput 實體的 input 屬性才能加以指定。
當您將 Shader 實體指派給此屬性時,著色器會在內部進行複製,且濾鏡作業會使用該內部副本,而不是原始著色器的參考。 任何對著色器的變更,例如變更參數值、輸入,或是位元組碼,都不會套用到用於濾鏡上的著色器副本。為了讓濾鏡輸出考慮到著色器變更,您必須將 Shader 實體重新指派給 shader 屬性。如同所有濾鏡,您也必須重新指派 ShaderFilter 實體給顯示物件的 filters 屬性,以便套用濾鏡變更。
實作
public function get shader():Shader public function set shader(value:Shader):voidtopExtension | 屬性 |
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):voidShaderFilter | () | 建構函式 |
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, 03:47 PM Z
隱藏繼承公用屬性
顯示繼承公用屬性