Acesso aos metadados de sombreadorFlash Player 10 e posterior, Adobe AIR 1.5 e posterior Ao criar um kernel de sombreador Pixel Bender, o autor pode especificar metadados sobre o sombreador no código fonte Pixel Bender. Ao usar um sombreador no ActionScript, você pode examiná-lo e extrair seus metadados. Ao criar uma ocorrência de Shader e vinculá-la a um sombreador Pixel Bender, um objeto ShaderData que contém dados sobre o sombreador é criado e armazenado na propriedade data do objeto Shader. A classe ShaderData não define nenhuma propriedade própria. No entanto, em tempo de execução uma propriedade é adicionada dinamicamente ao objeto ShaderData para cada valor de metadados definido no código fonte do sombreador. O nome fornecido a cada propriedade é igual ao nome especificado nos metadados. Por exemplo, suponha que o código fonte de um sombreador Pixel Bender inclua a seguinte definição de metadados: namespace : "Adobe::Example"; vendor : "Bob Jones"; version : 1; description : "Creates a version of the specified image with the specified brightness."; O objeto ShaderData criado para esse sombreador é criado com as seguintes propriedades e valores:
Como as propriedades de metadados são adicionadas dinamicamente ao objeto ShaderData, você pode usar um loop for..in para examinar o objeto ShaderData. Usando essa técnica é possível descobrir se o sombreador tem algum metadado e quais são os seus valores. Além das propriedades de metadados, um objeto ShaderData pode ter propriedades que representam entradas e parâmetros definidos no sombreador. Ao usar um loop for..in para examinar um objeto ShaderData, verifique o tipo de dados de cada propriedade para determinar se a propriedade é uma entrada (uma ocorrência de ShaderInput), um parâmetro (uma ocorrência de ShaderParameter) ou um valor de metadados (uma ocorrência de String). O exemplo a seguir mostra como usar um loop for..in para examinar as propriedades dinâmicas da propriedade data de um sombreador. Cada valor de metadados é adicionado a uma ocorrência de Vector denominada metadata. Observe que este exemplo pressupõe que uma ocorrência de Shader denominada myShader já foi criada: var shaderData:ShaderData = myShader.data; var metadata:Vector.<String> = new Vector.<String>(); for (var prop:String in shaderData) { if (!(shaderData[prop] is ShaderInput) && !(shaderData[prop] is ShaderParameter)) { metadata[metadata.length] = shaderData[prop]; } } // do something with the metadata Para obter uma versão desse exemplo que também extrai entradas e parâmetros de sombreador, consulte Identificação de entradas e parâmetros de sombreador. Para obter mais informações sobre propriedades de entrada e parâmetro, consulte Especificação de valores de entrada e de parâmetro de sombreador. |
![]() |