Als u werkt met een Pixel Bender-arcering in ActionScript moet u eerst toegang hebben tot de arcering in de ActionScript-code. Aangezien een arcering met de toolkit van Adobe Pixel Bender wordt gemaakt en is geschreven in de Pixel Bender-taal, hebt u vanuit ActionScript niet rechtstreeks toegang tot de arcering. In plaats hiervan maakt u een instantie van de Shader-klasse die de Pixel Bender-arcering in ActionScript vertegenwoordigt. Met het Shader-object kunt u meer informatie over de arcering krijgen, zoals over mogelijke parameters die worden verwacht of waarden van invoerafbeeldingen. U geeft het Shader-object door aan andere objecten om de arcering daadwerkelijk te gebruiken. Als u de arcering bijvoorbeeld als filter wilt gebruiken, moet u het Shader-object toewijzen aan de eigenschap
shader
van een ShaderFilter-object. Als u de arcering als vulling bij het tekenen wilt gebruiken, moet u het Shader-object als argument doorgeven aan de methode
Graphics.beginShaderFill()
.
Via de ActionScript-code kunt u op twee manieren toegang krijgen tot een arcering die met de toolkit van Adobe Pixel Bender (een PJB-bestand) is gemaakt:
-
Geladen bij uitvoering: het arceringsbestand kan met een URLLoader-object worden geladen als een extern element. Deze techniek is vergelijkbaar met het laden van een extern element, zoals een tekstbestand. In het volgende voorbeeld wordt een bytecodebestand voor een arcering in runtime geladen en gekoppeld aan een Shader-instantie:
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(new URLRequest("myShader.pbj"));
var shader:Shader;
function onLoadComplete(event:Event):void {
// Create a new shader and set the loaded data as its bytecode
shader = new Shader();
shader.byteCode = loader.data;
// You can also pass the bytecode to the Shader() constructor like this:
// shader = new Shader(loader.data);
// do something with the shader
}
-
Ingesloten in het SWF-bestand: het arceringsbestand kan tijdens het compileren in het SWF-bestand worden ingesloten met de metagegevenstag
[Embed]
. De metagegevenstag
[Embed]
is alleen beschikbaar als u het SWF-bestand compileert met de Flex SDK. Voor de tag
[Embed]
geldt dat de parameter
source
verwijst naar het arceringsbestand en dat de parameter
mimeType
"application/octet-stream"
is, zoals in dit voorbeeld:
[Embed(source="myShader.pbj", mimeType="application/octet-stream")]
var MyShaderClass:Class;
// ...
// create a shader and set the embedded shader as its bytecode
var shader:Shader = new Shader();
shader.byteCode = new MyShaderClass();
// You can also pass the bytecode to the Shader() constructor like this:
// var shader:Shader = new Shader(new MyShaderClass());
// do something with the shader
In beide gevallen koppelt u de bytecode van de onbewerkte arcering (de eigenschap
URLLoader.data
of een instantie van de gegevensklasse
[Embed]
) aan de Shader-instantie. Zoals de vorige voorbeelden laten zien, kunt u de bytecode op twee manieren aan de Shader-instantie toewijzen. U kunt de bytecode van de arcering als een argument doorgeven aan de constructor
Shader()
. U kunt deze ook instellen als de eigenschap
byteCode
van de Shader-instantie.
Als u eenmaal een Pixel Bender-arcering hebt gemaakt en aan een Shader-object hebt gekoppeld, kunt u de arcering gebruiken om op verschillende manieren effecten te maken. U kunt de arcering als filter, overvloeimodus of bitmapvulling gebruiken of gebruiken voor het zelfstandig verwerken van bitmapgegevens of andere gegevens. U kunt de eigenschap
data
van het Shader-object ook gebruiken om toegang te krijgen tot de metagegevens van de arcering, om invoerafbeeldingen op te geven en om parameterwaarden in te stellen.
|
|
|