El primer paso para utilizar un sombreado de Pixel Bender en ActionScript es obtener acceso al sombreado en el código ActionScript. Debido a que los sombreados se crean a través del kit de herramientas de Adobe Pixel Bender, y se escriben en el lenguaje de Pixel Bender, no se puede acceder directamente a ellos en ActionScript. En su lugar, se crea una instancia de la clase Shader que representa el sombreado de Pixel Bender en ActionScript. El objeto Shader permite encontrar información sobre el sombreado. Así, permite determinar si el sombreado espera parámetros o valores de imagen de entrada. El objeto Shader se pasa a otros objetos para utilizar el sombreado. Por ejemplo, para utilizar el sombreado como un filtro, el objeto Shader se asigna a la propiedad
shader
de un objeto ShaderFilter. Como alternativa, para utilizar el sombreado como un relleno de dibujo, el objeto Shader se pasa como un argumento al método
Graphics.beginShaderFill()
.
El código ActionScript puede acceder a un sombreado creado por el kit de herramientas de Adobe Pixel Bender (un archivo .pbj) de dos formas diferentes:
-
Cargado en tiempo de ejecución: el archivo de sombreado se puede cargar como un activo externo a través de un objeto URLLoader. Esta técnica es similar a cargar un activo externo, como un archivo de texto. En el siguiente ejemplo se muestra la carga de un archivo de código de bytes de sombreado en tiempo de ejecución y su vinculación a una instancia de Shader:
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
}
-
Incorporado en el archivo SWF: el archivo de sombreado se puede incorporar en el archivo SWF en tiempo de compilación a través de la etiqueta de metadatos
[Embed]
. La etiqueta de metadatos
[Embed]
solo está disponible si utiliza el SDK de Flex para compilar el archivo SWF. El parámetro
[Embed]
de la etiqueta
source
señala al archivo de sombreado y su parámetro
mimeType
es
"application/octet-stream"
, tal y como se muestra en este ejemplo:
[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
En cualquier caso, se vincula el código de bytes de sombreado sin procesar (la propiedad
URLLoader.data
o una instancia de la clase de datos
[Embed]
) a la instancia de Shader. Como se muestra en el ejemplo anterior, el código de bytes se puede asignar a la instancia de Shader de dos modos diferentes. Puede transferir el código de bytes de sombreado como un argumento al constructor
Shader()
. También puede establecerlo como la propiedad
byteCode
de la instancia de Shader.
Una vez que se ha creado un sombreado de Pixel Bender y se ha vinculado a un objeto Shader, el sombreado se puede utilizar para crear efectos de formas diferentes. Se puede utilizar como filtro, modo de mezcla, relleno de mapa de bits o para la reproducción autónoma de mapas de bits u otros datos. La propiedad
data
del objeto Shader se puede utilizar para acceder a los metadatos del sombreado, especificar imágenes de entrada y establecer valores de parámetro.