Läsa in eller bädda in en skuggning
Flash Player 10 och senare, Adobe AIR 1.5 och senare
Det första steget när du använder en Pixel Bender-skuggning i ActionScript är att få åtkomst till skuggningen i ActionScript-koden. Eftersom en skuggning skapas med Adobes Pixel Bender-verktygslådan, och skrivs i Pixel Bender-språket, kan det inte nås direkt i ActionScript. I stället skapar du en instans av klassen Shader som representerar Pixel Bender-skuggningen för ActionScript. Med Shader-objektet kan du ta reda på information om skuggningen, till exempel om den förväntar sig parametrar eller värden för indatabilder. Du skickar Shader-objektet till andra objekt när du vill använda skuggningen. Om du till exempel vill använda skuggningen som ett filter tilldelar du Shader-objektet till
shader
-egenskapen i ett ShaderFilter-objekt. Om du i stället vill använda skuggningen som en fyllning skickar du Shader-objektet som ett argument till metoden
Graphics.beginShaderFill()
.
ActionScript-koden får tillgång till en skuggning som skapats med Adobes Pixel Bender-verktygslådan (en .pbj-fil) på två sätt:
-
Inläsning vid körning: skuggningsfilen kan läsas in som en extern resurs med hjälp av ett URLLoader-objekt. Den här metoden påminner om att läsa in en extern resurs, till exempel en textfil. Följande exempel visar hur en skuggningsbytekodfil läses in vid körning och länkas till en Shader-instans:
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
}
-
Inbäddad i SWF-filen: skuggningsfilen kan bäddas in i SWF-filen vid kompilering med hjälp av metadatataggen
[Embed]
. Metadatataggen
[Embed]
är bara tillgänglig om du använder Flex SDK för att kompilera SWF-filen.
[Embed]
-taggens
source
-parameter pekar på skuggningsfilen och dess
mimeType
-parameter är
"application/octet-stream"
, vilket visas i det här exemplet:
[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
I båda fallen länkar du bytekoden för rådataskuggning (
URLLoader.data
-egenskapen eller en instans av
[Embed]
-dataklassen) till Shader-instansen. Så som visas i exemplen ovan kan du tilldela bytekoden till Shader-instansen på två sätt. Du kan skicka skuggningsbytekoden som ett argument till
Shader()
-konstruktorn. Du kan också ange den som
byteCode
-egenskap för Shader-instansen.
När en Pixel Bender-skuggning har skapats och länkats till ett Shader-objekt, kan du använda skuggningen för att skapa effekter på olika sätt. Du kan använda den som ett filter, ett blandningsläge, en bitmappsfyllning eller för fristående bearbetning av bitmapps- eller andra data. Du kan också använda Shader-objektets
data
-egenskap när du vill komma åt skuggningens metadata, ange indatabilder och ställa in parametervärden.
|
|
|