15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Arbeiten mit Pixel Bender-Shadern<br />

Der ActionScript-Code kann auf einen mit dem Adobe Pixel Bender Toolkit erstellten Shader (eine .pbj-Datei) auf<br />

zwei Arten zugreifen:<br />

Laden zur Laufzeit: Die Shader-Datei kann mit einem URLLoader-Objekt als externes Element geladen werden.<br />

Dieses Verfahren entspricht dem Laden anderer externer Elemente wie z. B. einer Textdatei. Das folgende Beispiel<br />

zeigt, wie eine Bytecode-Datei für einen Shader zur Laufzeit geladen und mit einer Shader-Instanz verknüpft wird:<br />

var loader:URLLoader = new URLLoader();<br />

loader.dataFormat = URLLoaderDataFormat.BINARY;<br />

loader.addEventListener(Event.COMPLETE, onLoadComplete);<br />

loader.load(new URLRequest("myShader.pbj"));<br />

var shader:Shader;<br />

function onLoadComplete(event:Event):void {<br />

// Create a new shader and set the loaded data as its bytecode<br />

shader = new Shader();<br />

shader.byteCode = loader.data;<br />

}<br />

// You can also pass the bytecode to the Shader() constructor like this:<br />

// shader = new Shader(loader.data);<br />

// do something with the shader<br />

Einbetten in die SWF-Datei: Die Shader-Datei kann beim Kompilieren mithilfe des Metadaten-Tags [Embed] in<br />

die SWF-Datei eingebettet werden. Das Metadaten-Tag [Embed] ist nur verfügbar, wenn Sie die SWF-Datei mit<br />

dem Flex SDK kompilieren. Der source-Parameter des [Embed]-Tags verweist auf die Shader-Datei und der<br />

mimeType-Parameter lautet "application/octet-stream", wie im folgenden Beispiel gezeigt:<br />

[Embed(source="myShader.pbj", mimeType="application/octet-stream")]<br />

var MyShaderClass:Class;<br />

// ...<br />

// create a shader and set the embedded shader as its bytecode<br />

var shader:Shader = new Shader();<br />

shader.byteCode = new MyShaderClass();<br />

// You can also pass the bytecode to the Shader() constructor like this:<br />

// var shader:Shader = new Shader(new MyShaderClass());<br />

// do something with the shader<br />

In beiden Fällen verknüpfen Sie den unformatierten Shader-Bytecode (die URLLoader.data-Eigenschaft oder eine<br />

Instanz der [Embed]-Datenklasse) mit der Shader-Instanz. Wie im vorherigen Beispiel zu sehen ist, können Sie den<br />

Bytecode auf zwei Arten mit der Shader-Instanz verknüpfen. Sie können den Shader-Bytecode als Argument an den<br />

Shader()-Konstruktor übergeben. Oder Sie legen ihn als byteCode-Eigenschaft der Shader-Instanz fest.<br />

Nachdem ein Pixel Bender-Shader erstellt und mit einem Shader-Objekt verknüpft wurde, können Sie mit dem Shader<br />

auf unterschiedliche Weise Effekte erstellen. Sie können den Shader als Filter, Mischmodus oder Bitmap-Füllung<br />

sowie zur eigenständigen Verarbeitung von Bitmaps und anderen Daten verwenden. Darüber hinaus können Sie mit<br />

der data-Eigenschaft des Shader-Objekts auf die Metadaten des Shaders zugreifen, Eingabebilder angeben und<br />

Parameterwerte festlegen.<br />

Letzte Aktualisierung 27.6.2012<br />

322

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!