Paket | spark.effects |
Klasse | public class AnimateTransitionShader |
Vererbung | AnimateTransitionShader Animate Effect EventDispatcher Object |
Unterklassen | CrossFade, Wipe |
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 4 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Der AnimateTransitionShader-Effekt verwendet Pixel Bender, was für AIR-Mobilanwendungen nicht unterstützt wird. |
Der AnimateTransitionShader-Effekt animiert einen Übergang zwischen zwei Bitmaps. Eine Bitmap stellt den Startstatus (
bitmapFrom
), die andere den Endstatus (bitmapTo
) dar.
Die Animation wird mit einem Pixel-Shader-Programm ausgeführt, das von der shader
-Eigenschaft angegeben wird und für das die beiden Bitmaps als Eingabe verwendet werden. Die Bitmaps werden durch eine Instanz der flash.display.BitmapData-Klasse dargestellt. Sie können mit Adobe Pixel Bender Toolkit Ihr eigenes Pixel-Shader-Programm erstellen.
Wenn keine der Bitmaps angegeben wird, wird dieser Wert dynamisch anhand des entsprechenden Status des Ziels in einem Übergang bestimmt oder, wenn der Effekt nicht in einem Übergang ausgeführt wird, direkt anhand des Ziels. Wenn der Effekt in einem Übergang ausgeführt wird und das Zielobjekt während der Statusänderung entweder verschwindet oder entsteht, wird eine vollkommen transparente Bitmap verwendet, um das Objekt darzustellen, wenn es nicht existiert.
Dieser Effekt kann nur für Ziele ausgeführt werden, bei denen es sich entweder um UIComponents oder GraphicElements handelt, da für das Erfassen der Bitmap des Objekts Informationen über das Objekt erforderlich sind, die nur in diesen Klassen existieren.
Da der Effekt bitmapbasiert ist und das zugrunde liegende Pixel-Shader-Programm erwartet, dass beide Bitmaps dieselbe Größe aufweisen, kann der Effekt auch nur korrekt ausgeführt werden, wenn diese Voraussetzung erfüllt ist. Dies bedeutet, dass der Effekt möglicherweise nicht korrekt abgespielt wird, wenn sich die Größe oder Ausrichtung des Zielobjekts und folglich die Größe des Begrenzungsrahmens ändert.
Dieser Effekt und seine Unterklassen unterscheiden sich von anderen Effekten in Flex dadurch, dass sie dafür konzipiert sind, eigenständig zu funktionieren, und möglicherweise nicht zu dem beabsichtigten Ergebnis führen, wenn sie parallel zu anderen Effekten ausgeführt werden. Diese Beschränkung wird durch die Tatsache hervorgerufen, dass die Vorher- und Nachher-Bitmap vor dem Beginn der Ausführung des Effekts erfasst werden. Wenn also etwas mit dem Zielobjekt passiert, nachdem diese Bitmaps berechnet wurden (wenn z. B. die Eigenschaften des Ziels durch einen anderen Effekt geändert werden), sind diese Änderungen in den im Voraus berechneten Bitmaps nicht berücksichtigt, sodass die Ergebnisse nicht den Erwartungen entsprechen. Um die korrekte Wiedergabe solcher bitmapbasierter Effekte sicherzustellen, sollten diese einzeln für die Zielobjekte abgespielt werden.
MXML-SyntaxMXML-Syntax ausblendenThe <s:AnimateTransitionShader>
tag
inherits all of the tag attributes of its superclass,
and adds the following tag attributes:
<s:AnimateTransitionShader Properties id="ID" bitmapFrom="no default" bitmapTo="no default" shaderByteCode="no default" sahderProperties="no default" />
Standard-MXML-EigenschaftmotionPaths
Verwandte API-Elemente
spark.effects.supportClasses.AnimateTransitionShaderInstance
spark.primitives.supportClasses.GraphicElement
Eigenschaft | Definiert von | ||
---|---|---|---|
bitmapFrom : BitmapData
Die Bitmap-Daten, die den Startstatus dieses Effekts darstellen. | AnimateTransitionShader | ||
bitmapTo : BitmapData
Die Bitmap-Daten, die den Endstatus dieses Effekts darstellen. | AnimateTransitionShader | ||
className : String [schreibgeschützt]
Name der Effektklasse wie „Fade“. | Effect | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
customFilter : mx.effects:EffectTargetFilter
Gibt ein benutzerdefiniertes Filterobjekt des Typs EffectTargetFilter an, das zur Ermittlung der Ziele dient, bei denen der Effekt wiedergegeben wird. | Effect | ||
disableLayout : Boolean
Wenn der Wert „true“ ist, wird durch den Effekt das Layout auf den übergeordneten Containern der Ziele deaktiviert, indem die autoLayout-Eigenschaft der Container auf „false“ gesetzt wird, und alle Layoutbeschränkungen auf Zielobjekten werden deaktivert. | Animate | ||
duration : Number
Dauer des Effekts in Millisekunden. | Effect | ||
easer : IEaser
Das Beschleunigungsverhalten für diesen Effekt. | Animate | ||
effectTargetHost : mx.effects:IEffectTargetHost
Eine Eigenschaft, die Ihnen den Zugriff auf listenbasierte Zielsteuerelemente eines Dateneffekts ermöglicht. | Effect | ||
filter : String
Gibt einen Algorithmus zum Filtern der Ziele für einen Effekt an. | Effect | ||
hideFocusRing : Boolean
Bestimmt, ob der Effekt den Fokusring beim Start ausblenden soll. | Effect | ||
instanceClass : Class
Ein Objekt der type-Klasse, das die Effektinstanzklasse für diese Effektklasse angibt. | Effect | ||
interpolator : IInterpolator
Der Interpolator, der von diesem Effekt verwendet wird, um Werte zwischen den Anfangs- und Endwerten einer Eigenschaft zu berechnen. | Animate | ||
isPlaying : Boolean [schreibgeschützt]
Ein Flag für den Schreibschutz, das auf „true“ gesetzt ist, wenn Instanzen des Effekts aktuell wiedergegeben werden, und andernfalls auf „false“. | Effect | ||
motionPaths : Vector.<MotionPath>
Ein Vektor von MotionPath-Objekten, die alle den Namen einer zu animierenden Eigenschaft und die während der Animation von der Eigenschaft verwendeten Werte enthalten. | Animate | ||
perElementOffset : Number
Zusätzliche Verzögerung (in Millisekunden) für Effektziele nach dem ersten Ziel des Effekts. | Effect | ||
playheadTime : Number
Aktuelle Zeitposition des Effekts. | Effect | ||
relevantProperties : Array
Ein Array von Eigenschaftsnamen zur Verwendung beim Filtern. | Effect | ||
relevantStyles : Array
Ein Array von Stilnamen zur Verwendung beim Filtern. | Effect | ||
repeatBehavior : String
Das Verhalten eines sich wiederholenden Effekts, also eines Effekts mit repeatCount gleich 0 oder > 1. | Animate | ||
repeatCount : int = 1
Ein Wert, der angibt, wie oft der Effekt wiederholt werden soll. | Effect | ||
repeatDelay : int = 0
Wartezeit in Millisekunden vor der Wiederholung des Effekts. | Effect | ||
shaderByteCode : Object
Der Bytecode für das Pixel-Shader-Programm, der vom Effekt für die Animation zwischen den beiden Bitmaps verwendet wird. | AnimateTransitionShader | ||
shaderProperties : Object
Eine Matrix von Parametername/Wert-Paaren, die vor der Wiedergabe an das Pixel-Shader-Programm übergeben werden. | AnimateTransitionShader | ||
startDelay : int = 0
Wartezeit in Millisekunden vor dem Starten des Effekts. | Effect | ||
target : Object
Das Objekt, auf das dieser Effekt angewendet wird. | Effect | ||
targets : Array
Ein Array von Objekten, die als Ziele des Effekts verwendet werden können. | Effect | ||
triggerEvent : Event
Der EffectManager übergibt diesem Effekt das Ereignisobjekt, wenn ein Effekt ausgelöst wird, oder null, wenn der Effekt nicht vom EffectManager wiedergegeben wird. | Effect |
Methode | Definiert von | ||
---|---|---|---|
AnimateTransitionShader(target:Object = null)
Konstruktor. | AnimateTransitionShader | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | EventDispatcher | ||
Erfasst die aktuellen Werte der relevanten Eigenschaften der Ziele des Effekts und speichert sie als Endwerte. | Effect | ||
Erfasst die aktuellen Werte der relevanten Eigenschaften eines zusätzlichen Zielsatzes. Flex verwendet diese Funktion, wenn ein Datenänderungseffekt ausgeführt wird.
| Effect | ||
Erfasst die aktuellen Werte der relevanten Eigenschaften der Ziele des Effekts. | Effect | ||
Erstellt eine einzelne Effektinstanz und initialisiert sie. | Effect | ||
Verwendet ein Array von Zielobjekten und ruft die createInstance()-Methode auf jedem Ziel auf. | Effect | ||
Entfernt Ereignis-Listener von einer Instanz und entfernt sie aus der Liste der Instanzen. | Effect | ||
Sendet ein Ereignis in den Ereignisablauf. | EventDispatcher | ||
Unterbricht einen aktuell wiedergegebenen Effekt und springt sofort zum Ende des Effekts. | Effect | ||
Gibt ein Array von Strings zurück, wobei jeder String dem Namen einer Eigenschaft entspricht, die von diesem Effekt geändert wird. | Effect | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | EventDispatcher | ||
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 | ||
Hält den Effekt an, bis die resume()-Methode aufgerufen wird. | Effect | ||
Startet die Wiedergabe des Effekts. | Effect | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | EventDispatcher | ||
Setzt den Effekt fort, nachdem er durch Aufrufen der pause()-Methode vorübergehend unterbrochen wurde. | Effect | ||
Gibt den aktuell wiedergegebenen Effekt rückwärts wieder und beginnt dabei an der aktuellen Position des Effekts. | Effect | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Hält den Effekt an und behält den aktuellen Status der Effektziele bei. | Effect | ||
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 | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | EventDispatcher |
bitmapFrom | Eigenschaft |
public var bitmapFrom:BitmapData
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 4 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Die Bitmap-Daten, die den Startstatus dieses Effekts darstellen. Wenn diese Eigenschaft nicht eingestellt ist, wird sie automatisch berechnet, wenn der Effekt abgespielt wird, indem ein Schnappschuss des Zielobjekts erstellt oder eine transparente Bitmap verwendet wird, wenn das Objekt im anfänglichen Ansichtsstatus eines Übergangs nicht verfügbar ist.
bitmapTo | Eigenschaft |
public var bitmapTo:BitmapData
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 4 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Die Bitmap-Daten, die den Endstatus dieses Effekts darstellen. Wenn diese Eigenschaft nicht eingestellt ist, wird sie automatisch berechnet, wenn der Effekt abgespielt wird, indem ein Schnappschuss des Zielobjekts erstellt oder eine transparente Bitmap verwendet wird, wenn das Objekt im abschließenden Ansichtsstatus eines Übergangs nicht verfügbar ist.
shaderByteCode | Eigenschaft |
public var shaderByteCode:Object
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 4 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Der Bytecode für das Pixel-Shader-Programm, der vom Effekt für die Animation zwischen den beiden Bitmaps verwendet wird. Diese Eigenschaft kann entweder als ByteArray oder als eine Klasse dargestellt werden, die ein ByteArray darstellt (das den Ergebnissen entspricht, wenn Sie eine Ressource einbetten).
Das Pixel-Shader-Programm kann über beliebig viele Funktionen und Eingaben verfügen, muss jedoch mindestens drei image4
-Eingaben aufweisen. Die erste Eingabe, die beliebig benannt werden kann, sollte von Ihrem Pixel-Shader-Programmcode nicht verwendet werden. Sie ist nur vorhanden, um der Flash-Anforderung gerecht zu werden, derzufolge der ersten Eingabe ein gefiltertes Objekt zugeordnet werden muss. Beachten Sie, dass Eingaben, die in einem Pixel-Shader-Programm absolut nicht verwendet werden, herausoptimiert werden können, sodass Ihr Code diese Eingabe zumindest einmal referenzieren sollte.
Es müssen mindestens zwei weitere Eingabe-Bitmaps mit den Bezeichnungen from
und to
verfügbar sein, die den Vorher- und Nachher-Bitmap-Bildern entsprechen. Schließlich müssen Sie einen float
-Parameter mit der Bezeichnung progress
definieren, der den verstrichenen Teil des Effekts enthält.
Sie können die beiden optionalen Parameter width
und height
angeben. Wenn sie vorhanden sind, werden sie automatisch auf die Breite und Höhe des Effektziels eingestellt.
Weitere Informationen zum Schreiben von Pixel-Shader-Programmen für Flash können Sie der Dokumentation Pixel Bender Toolkit entnehmen. Sie können den Quellcode für die Datei „CrossFade.pbk“ auch im Ordner frameworks\projects\flex4\src\spark\effects des Flex-Quellcodes anzeigen.
shaderProperties | Eigenschaft |
public var shaderProperties:Object
Sprachversion: | ActionScript 3.0 |
Produktversion: | Flex 4 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Eine Matrix von Parametername/Wert-Paaren, die vor der Wiedergabe an das Pixel-Shader-Programm übergeben werden. Um beispielsweise den Parameter direction
in einem Shader mit einer Pixel Bender PBJ-Datei auf Wipe.pbj einzustellen, könnte der aufrufende Code folgende Schritte ausführen:
[Embed(source="Wipe.pbj", mimeType="application/octet-stream")] private var WipeCodeClass:Class; var shaderEffect = new AnimateTransitionShader(); shaderEffect.shaderByteCode = WipeCodeClass; shaderEffect.shaderProperties = {direction : 1};
AnimateTransitionShader | () | Konstruktor |
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark"> <s:states> <s:State name="default"/> <s:State name="flipped"/> </s:states> <s:transitions> <s:Transition id="t1"> <s:AnimateTransitionShader target="{holder}" duration="1000" shaderByteCode="@Embed(source='assets/twist.pbj', mimeType='application/octet-stream')"/> </s:Transition> </s:transitions> <s:Panel title="AnimateTransitionShader Example" width="75%" height="75%" horizontalCenter="0" verticalCenter="0"> <s:HGroup width="100%" height="100%" top="5" left="5" right="5"> <s:Group id="holder"> <s:BitmapImage source="@Embed('assets/back2.png')" visible="true" visible.flipped="false"/> <s:BitmapImage source="@Embed('assets/c2.png')" visible="false" visible.flipped="true"/> </s:Group> <!-- Directions --> <s:VGroup id="detailsBox" width="50%" left="0"> <s:Label width="99%" color="blue" text="AnimateShaderTransition animates a shader between two images. Click the 'Animate Shader' button to see the effect."/> </s:VGroup> </s:HGroup> <s:Rect left="0" right="0" bottom="0" height="30"> <s:fill> <s:LinearGradient rotation="90"> <s:GradientEntry color="0xE2E2E2" /> <s:GradientEntry color="0xD9D9D9" /> </s:LinearGradient> </s:fill> </s:Rect> <s:Button id="playButton" left="5" bottom="5" label="Animate Shader" click="currentState = (currentState == 'flipped') ? 'default' : 'flipped';"/> </s:Panel> </s:Application>
Tue Jun 12 2018, 10:04 AM Z