Paket | flash.filters |
Klasse | public class ShaderFilter |
Vererbung | ShaderFilter BitmapFilter Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Verwenden Sie zum Erstellen eines neuen Filters den newShaderFilter()
-Konstruktor. Die Verwendung von Filtern hängt davon ab, auf welches Objekt sie jeweils angewendet werden:
- Um Filter auf Movieclips, Textfelder, Schaltflächen und Videosequenzen anzuwenden, verwenden Sie die Eigenschaft
filters
(von DisplayObject übernommen). Durch die Einstellung derfilters
-Eigenschaft wird das betroffene Objekt selbst nicht verändert, und Sie können den Filter wieder entfernen, indem Sie diefilters
-Eigenschaft löschen. - Um Filter auf BitmapData-Objekte anzuwenden, verwenden Sie die
BitmapData.applyFilter()
-Methode. Durch den Aufruf vonapplyFilter()
bei einem BitmapData-Objekt wird das gefilterte Bild aus dem BitmapData-Quellobjekt und dem Filterobjekt generiert.
Wenn Sie einen Filter auf ein Anzeigeobjekt anwenden, wird der Wert der cacheAsBitmap
-Eigenschaft des Objekts auf true gesetzt. Wenn Sie alle Filter entfernen, wird der ursprüngliche Wert von cacheAsBitmap
wiederhergestellt.
Dieser Filter unterstützt Bühnenskalierung. Allgemeine Skalierung, Drehung und Neigung werden dagegen nicht unterstützt. Wenn das Objekt selbst skaliert wird (also die Eigenschaften scaleX
und scaleY
ungleich 100 % sind), wird der Filtereffekt nicht skaliert. Er wird nur skaliert, wenn die Bühne vergrößert dargestellt wird.
Ein Filter wird nicht angewendet, wenn das Ergebnisbild die maximalen Abmessungen überschreitet. In AIR 1.5 und Flash Player 10 beträgt die maximale Höhe oder Breite 8.191 Pixel; die gesamte Pixelzahl darf 16.777.215 nicht übersteigen. (Wenn ein Bild also 8.191 Pixel breit ist, darf es nur 2.048 Pixel hoch sein.) In Flash Player 9 und niedriger und AIR 1.1 und niedriger liegt die Grenze bei je 2.880 Pixel Höhe und Breite. Wenn Sie beispielsweise einen großen Movieclip mit aktiviertem Filter vergrößert darstellen, wird der Filter deaktiviert, sobald das Ergebnisbild die maximalen Abmessungen überschreitet.
Um die Shader-Instanz festzulegen, die mit dem Filter verwendet werden soll, übergeben Sie die Shader-Instanz als Argument an den ShaderFilter()
-Konstruktor oder setzen Sie sie als Wert der shader
-Eigenschaft.
Damit sich die Shaderausgabe über die Grenzen des gefilterten Objekts erstrecken kann, verwenden Sie die Eigenschaften leftExtension
, rightExtension
, topExtension
und bottomExtension
.
Verwandte API-Elemente
flash.display.DisplayObject.cacheAsBitmap
flash.display.BitmapData.applyFilter()
flash.display.Shader
Eigenschaft | Definiert von | ||
---|---|---|---|
bottomExtension : int
Die Erweiterung an der unteren Seite des Zielobjekts in Pixel. | ShaderFilter | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
leftExtension : int
Die Erweiterung an der linken Seite des Zielobjekts in Pixel. | ShaderFilter | ||
rightExtension : int
Die Erweiterung an der rechten Seite des Zielobjekts in Pixel. | ShaderFilter | ||
shader : Shader
Der für diesen Filter zu verwendende Shader. | ShaderFilter | ||
topExtension : int
Die Erweiterung an der oberen Seite des Zielobjekts in Pixeln. | ShaderFilter |
Methode | Definiert von | ||
---|---|---|---|
ShaderFilter(shader:Shader = null)
Erstellt einen neuen Shaderfilter. | ShaderFilter | ||
Gibt ein BitmapFilter-Objekt zurück, das eine exakte Kopie des ursprünglichen BitmapFilter-Objekts ist. | BitmapFilter | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object |
bottomExtension | Eigenschaft |
bottomExtension:int
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Die Erweiterung an der unteren Seite des Zielobjekts in Pixel.
Die Erweiterung ist der Bereich außerhalb der Grenzen des Zielobjekts, das während der Ausführung an den Shader übergeben wird. Bei der Ausführung berechnet Flash Player oder AIR die normalen Grenzen eines Movieclips und erweitert sie auf Basis der Werte leftExtension
, rightExtension
, topExtension
und bottomExtension
.
Der Standardwert ist 0.
Implementierung
public function get bottomExtension():int
public function set bottomExtension(value:int):void
leftExtension | Eigenschaft |
leftExtension:int
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Die Erweiterung an der linken Seite des Zielobjekts in Pixel.
Die Erweiterung ist der Bereich außerhalb der Grenzen des Zielobjekts, das während der Ausführung an den Shader übergeben wird. Bei der Ausführung berechnet Flash Player oder AIR die normalen Grenzen eines Movieclips und erweitert sie auf Basis der Werte leftExtension
, rightExtension
, topExtension
und bottomExtension
.
Der Standardwert ist 0.
Implementierung
public function get leftExtension():int
public function set leftExtension(value:int):void
rightExtension | Eigenschaft |
rightExtension:int
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Die Erweiterung an der rechten Seite des Zielobjekts in Pixel.
Die Erweiterung ist der Bereich außerhalb der Grenzen des Zielobjekts, das während der Ausführung an den Shader übergeben wird. Bei der Ausführung berechnet Flash Player oder AIR die normalen Grenzen eines Movieclips und erweitert sie auf Basis der Werte leftExtension
, rightExtension
, topExtension
und bottomExtension
.
Der Standardwert ist 0.
Implementierung
public function get rightExtension():int
public function set rightExtension(value:int):void
shader | Eigenschaft |
shader:Shader
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Der für diesen Filter zu verwendende Shader.
Der Shader, der der shader
-Eigenschaft zugewiesen ist, muss mindestens zwei image4
-Eingaben festlegen. Die Eingabe muss nicht im Code über die input
-Eigenschaft des verknüpften ShaderInput-Objekts festgelegt werden. Stattdessen wird das Objekt, auf das der Filter angewendet wird, automatisch als erste Eingabe verwendet (die Eingabe mit index
= 0). Ein als Filter verwendeter Shader kann mehr als eine Eingabe festlegen. Diese zusätzlichen Eingaben werden durch das Setzen der input
-Eigenschaft der ShaderInput-Instanz festgelegt.
Wenn Sie dieser Eigenschaft eine Shader-Instanz zuweisen, wird der Shader intern kopiert und der Zeichenfüllvorgang verwendet anstatt eines Verweises auf den ursprünglichen Shader die interne Kopie. Änderungen am Shader, beispielsweise die Änderung eines Parameterwerts, einer Eingabe oder des Bytecodes, werden nicht auf die Shaderkopie angewendet, die für den Filter verwendet wird. Damit die Änderungen des Shaders bei der Filterausgabe berücksichtigt werden, müssen Sie der shader
-Eigenschaft die Shader-Instanz erneut zuweisen. Wie bei allen Filtern müssen Sie der filters
-Eigenschaft des Anzeigeobjekts auch die ShaderFilter-Instanz erneut zuweisen, damit die Filteränderungen angewendet werden.
Implementierung
public function get shader():Shader
public function set shader(value:Shader):void
topExtension | Eigenschaft |
topExtension:int
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Die Erweiterung an der oberen Seite des Zielobjekts in Pixeln.
Die Erweiterung ist der Bereich außerhalb der Grenzen des Zielobjekts, das während der Ausführung an den Shader übergeben wird. Bei der Ausführung berechnet Flash Player oder AIR die normalen Grenzen eines Movieclips und erweitert sie auf Basis der Werte leftExtension
, rightExtension
, topExtension
und bottomExtension
.
Der Standardwert ist 0.
Implementierung
public function get topExtension():int
public function set topExtension(value:int):void
ShaderFilter | () | Konstruktor |
public function ShaderFilter(shader:Shader = null)
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Erstellt einen neuen Shaderfilter.
Parametershader:Shader (default = null ) — Der für diesen Filter zu verwendende Shader. Weitere Informationen und Einschränkungen zum Shader finden Sie in der Beschreibung der shader -Eigenschaft.
|
Verwandte API-Elemente
shader
-Eigenschaft eines ShaderFilters verwendet. Der Code zeichnet einen Kreis in einer Sprite-Instanz und fügt sie der Bühne hinzu. Beim Laden des Shaders wird der Shaderfilter auf das Sprite angewendet.
Beachten Sie, dass im Beispiel davon ausgegangen wird, dass im selben Ordner wie dem Ausgabeordner der Anwendung eine Shaderbytecodedatei namens „gradient.pbj“ vorhanden ist.
// // 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:04 AM Z