Arceringen laden of insluiten

Flash Player 10 of hoger, Adobe AIR 1.5 of hoger

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.