Få tillgång till skuggningens metadataFlash Player 10 och senare, Adobe AIR 1.5 och senare När utvecklaren skapar en Pixel Bender-skuggningskärna, kan han eller hon ange metadata om skuggningen i Pixel Bender-källkoden. När du använder en skuggning i ActionScript kan du undersöka skuggningen och hämta dess metadata. När du skapar en Shader-instans och länkar den till en Pixel Bender-skuggning, skapas ett ShaderData-objekt som innehåller data om skuggningen och lagras i Shader-objektets data-egenskap. Klassen ShaderData definierar inte några egenskaper på egen hand. Under körning läggs en egenskap till dynamiskt i ShaderData-objektet för varje metadatavärde som definieras i skuggningens källkod. Namnet som ges till respektive egenskap är detsamma som namnet som anges i metadata. Anta att källkoden för en Pixel Bender-skuggning omfattar följande metadatadefinition: namespace : "Adobe::Example"; vendor : "Bob Jones"; version : 1; description : "Creates a version of the specified image with the specified brightness."; ShaderData-objektet skapas för den skuggningen med följande egenskaper och värden:
Eftersom metadataegenskaperna läggs till dynamiskt i ShaderData-objektet kan du använda en for..in-slinga när du undersöker ShaderData-objektet. Med den här tekniken kan du ta reda på om skuggningen har några metadata och vilka metadatavärdena är. Förutom metadataegenskaper kan ett ShaderData-objekt ha egenskaper som representerar indata och parametrar som definieras i skuggningen. När du använder en for..in-slinga för att undersöka ett ShaderData-objekt kontrollera du datatypen för varje egenskap för att undersöka om egenskapen är indata (en ShaderInput-instans), en parameter (en ShaderParameter-instans) eller ett metadatavärde (en String-instans). Följande exempel visar hur du använder en for..in-slinga för att undersöka de dynamiska egenskaperna i en skuggnings data-egenskap. Varje metadatavärde läggs till i en Vector-instans med namnet metadata. I det här exemplet förutsätts det att en Shader-instans med namnet myShader redan har skapats: 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 En version av det här exemplet som också extraherar skuggningsindata och parametrar finns i Identifiera skuggningsindata och -parametrar. Mer information om indata och parameteregenskaper finns i Ange skuggningsindata och parametervärden. |
|