Referenshandbok för ActionScript® 3.0 i Adobe® Flash®-plattformen
Hem  |  Dölj paket och klasslista |  Paket  |  Klasser  |  Nyheter  |  Index  |  Bilagor  |  Varför på engelska?
Filter: Hämtar data från servern ...
Hämtar data från servern ...
flash.display 

Shader  - AS3

Paketflash.display
Klasspublic class Shader
ArvShader Inheritance Object
Underklasser ColorBurnShader, ColorDodgeShader, ColorShader, ExclusionShader, HueShader, LuminosityMaskShader, LuminosityShader, SaturationShader, SoftLightShader

Språkversion: ActionScript 3.0
Körningsmiljöversioner: Flash Player 10, AIR 1.5

En Shader-instans representerar en Pixel Bender-skuggningssystemkärna i ActionScript. Om du vill använda en skuggning i programmet skapar du en Shader-instans för den. Du använder sedan Shader-instansen på ett sätt som ger den effekt du vill skapa. Om du t.ex. vill använda skuggningen som ett filter tilldelar du Shader-instansen till shader-egenskapen i ett ShaderFilter-objekt.

En skuggning definierar en funktion som körs på alla pixlar i en bild, en pixel åt gången. Resultatet för varje anrop till funktionen är den utdatafärg som finns vid pixelkoordinaten i bilden. En skuggning kan ange en eller flera inmatningsbilder. Det är bilder vilkas innehåll kan användas när funktionens utdata bestäms. En skuggning kan också ange en eller flera parametrar som är inmatningsvärden som kan användas vid beräkning av funktionens utdata. I en enda skuggningskörning är inmatnings- och parametervärdena konstanta. Det enda som varierar är koordinaten för den pixel vars färg är funktionens utdata. Skuggningsfunktionsanrop för flera utdatapixelkoordinater körs parallellt för att förbättra körningens prestanda.

Skuggningsbytekoden kan läsas in vid körningen med hjälp av en URLLoader-instans. 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
     }
     

Du kan också bädda in skuggningen i SWF-filen vid kompileringen med hjälp av taggen för [Embed]-metadata. Taggen för [Embed]-metadata ä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". Visas i det här exemplet:

     [Embed(source="myShader.pbj", mimeType="application/octet-stream)]
     var MyShaderClass:Class;
      
     // ...
     
     // create a new shader and set the embedded shader as its bytecode
     var shaderShader = 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 rådataskuggningen (URLLoader.data-egenskapen eller en instans av [Embed]-dataklassen) till Shader-instansen. Som föregående exempel visar kan du göra det här 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 Shader-instansen har skapats kan den användas på något av följande sätt:

  • En skuggningsfyllning: Skuggningens utdata används som fyllning för innehåll som ritas med ritgränssnittet. Skicka Shader-instansen som ett argument till metoden Graphics.beginShaderFill().
  • Ett skuggningsfilter: Skuggningens utdata används som ett grafikfilter som används i ett visningsobjekt. Tilldela Shader-instansen till shader-egenskapen i en ShaderFilter-instans.
  • Ett blandningsläge: Skuggningens utdata återges som blandningen mellan två överlappande visningsobjekt. Tilldela Shader-instansen till blendShader-egenskapen i det övre visningsobjektet.
  • Bearbetning av skuggning i bakgrunden: Skuggningen körs i bakgrunden vilket minskar risken för att visningen blir fryst. En händelse skickas när bearbetningen är slutförd. Tilldela Shader-instansen till shader-egenskapen i en ShaderJob-instans.

Skuggningsfyllningar, filter och blandningar stöds inte vid GPU-återgivning.

Stöd för mobilwebbläsare: Den här funktionen stöds inte i mobilwebbläsare.

Stöd för AIR-profiler: Den här funktionen stöds på alla operativsystem för datorer, men inte på alla mobilenheter. Den stöds inte på enheter med AIR for TV. På sidan om stöd för AIR-profiler hittar du mer information om API-stöd för flera profiler.

Visa exemplen

Relaterade API-element



Publika egenskaper
 EgenskapDefinieras med
  byteCode : ByteArray
[lässkyddad] Bytekode för rådataskuggningen för den här Shader-instansen.
Shader
 Inheritedconstructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans.
Object
  data : ShaderData
Ger tillgång till parametrar, inmatningsbilder och metadata för Shader-instansen.
Shader
  precisionHint : String
Precisionen för de matematiska operationer som utförs av skuggningen.
Shader
Publika metoder
 MetodDefinieras med
  
Shader(code:ByteArray = null)
Skapar en ny Shader-instans.
Shader
 Inherited
Anger om det finns en egenskap angiven för ett objekt.
Object
 Inherited
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter.
Object
 Inherited
Anger om den angivna egenskapen finns och är uppräkningsbar.
Object
 Inherited
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder.
Object
 Inherited
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner.
Object
 Inherited
Returnerar det angivna objektets strängbeteckning.
Object
 Inherited
Returnerar det angivna objektets primitiva värde.
Object
Egenskapsdetaljer

byteCode

egenskap
byteCode:ByteArray  [lässkyddad]

Språkversion: ActionScript 3.0
Körningsmiljöversioner: Flash Player 10, AIR 1.5

Bytekode för rådataskuggningen för den här Shader-instansen.



Implementering
    public function set byteCode(value:ByteArray):void

data

egenskap 
data:ShaderData

Språkversion: ActionScript 3.0
Körningsmiljöversioner: Flash Player 10, AIR 1.5

Ger tillgång till parametrar, inmatningsbilder och metadata för Shader-instansen. De ShaderParameter-objekt som representerar parametrar för skuggningen, de ShaderInput-objekt som representerar inmatningsbilder för skuggningen och övriga värden som representerar skuggningens metadata läggs till dynamiskt som egenskaper för data-egenskapsobjektet när Shader-instansen skapas. De här egenskaperna kan användas för att granska skuggningen och ange parameter- och inmatningsvärden.

Mer information om hur du får åtkomst till och kan ändra de dynamiska egenskaperna för data-objektet finns i beskrivningen av ShaderData-klassen.



Implementering
    public function get data():ShaderData
    public function set data(value:ShaderData):void

Relaterade API-element

precisionHint

egenskap 
precisionHint:String

Språkversion: ActionScript 3.0
Körningsmiljöversioner: Flash Player 10, AIR 1.5

Precisionen för de matematiska operationer som utförs av skuggningen.

En uppsättning möjliga värden för precisionHint-egenskapen definieras av konstanterna i ShaderPrecision-klassen.

Standardvärdet är ShaderPrecision.FULL. Att ställa in precisionen till ShaderPrecision.FAST kan öka hastigheten på de matematiska beräkningarna till priset av minskad precision.

Precisionsläget full (ShaderPrecision.FULL) utför alla matematiska beräkningar till den fullständiga bredden på IEEE 32-bitars flyttalsstandard och ger konsekvent beteende på alla plattformar. I det här läget kan vissa matematiska operationer, t.ex. trigonometriska funktioner och exponentialfunktioner, ta lång tid att utföra.

Precisionsläget fast (ShaderPrecision.FAST) är utvecklat för snabbaste prestanda men fungerar inte konsekvent på olika plattformar och individuella processorkonfigurationer. I många fall är den här precisionsnivån tillräcklig för att skapa en bildeffekt utan synliga defekter.

Valet av precisionsläge påverkar följande skuggningsåtgärder. Dessa åtgärder är snabbare på en Intel-processor med SSE-instruktion:

  • sin(x)
  • cos(x)
  • tan(x)
  • asin(x)
  • acos(x)
  • atan(x)
  • atan(x, y)
  • exp(x)
  • exp2(x)
  • log(x)
  • log2(x)
  • pow(x, y)
  • reciprocal(x)
  • sqrt(x)



Implementering
    public function get precisionHint():String
    public function set precisionHint(value:String):void

Relaterade API-element

Konstruktordetaljer

Shader

()Konstruktor
public function Shader(code:ByteArray = null)

Språkversion: ActionScript 3.0
Körningsmiljöversioner: Flash Player 10, AIR 1.5

Skapar en ny Shader-instans.

Parametrar
code:ByteArray (default = null) — Den bytekod för rådataskuggningen som ska länkas till Shader-instansen.
ShaderExample.1.as

I följande exempel läses en skuggningsbytekodfil in vid körning och en Shader-instans att länka till skapas.

Observera att det här exemplet förutsätter att det finns en bytekodfil för skuggningen med namnet ”donothing.pbj” i samma katalog som programmets utdatakatalog. Pixel Bender-källkoden för DoNothing-skuggningen finns tillgänglig under Exempel för ShaderData-klassen.

package {
    import flash.display.Shader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;

    public class LoadedShaderExample extends Sprite {
        
        private var loader:URLLoader;
        
        public function LoadedShaderExample() {
            loader = new URLLoader();
            loader.dataFormat = URLLoaderDataFormat.BINARY;
            loader.addEventListener(Event.COMPLETE, loadCompleteHandler);
            loader.load(new URLRequest("donothing.pbj"));
        }
        
        private function loadCompleteHandler(event:Event):void {
            var shader:Shader = new Shader();
            shader.byteCode = loader.data;
            
            // do something with the Shader instance
        }
    }
}
ShaderExample.2.as

I följande exempel bäddas en skuggningsbytekodfil in i SWF-filen med hjälp av kompilering och en länkad Shader-instans skapas.

Observera att det här exemplet förutsätter att det finns en bytekodfil för skuggningen med namnet ”donothing.bpj” i samma katalog som programmets källkod finns, och att Flex SDK används för att kompilera SWF-filen. Pixel Bender-källkoden för DoNothing-skuggningen finns tillgänglig under Exempel för ShaderData-klassen.

package {
    import flash.display.Shader;
    import flash.display.Sprite;

    public class EmbeddedShaderExample extends Sprite {
        
        [Embed(source="donothing.pbj", mimeType="application/octet-stream")]
        private static var DoNothingShader:Class;
        
        public function EmbeddedShaderExample() {
            var shader:Shader = new Shader();
            shader.byteCode = new DoNothingShader();
            
            // do something with the Shader instance
        }
    }
}




[ X ]Varför på engelska?
Innehåll i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen är på engelska

Det är inte alla delar av Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen som översätts till alla språk. Om ett språkelement inte översätts visas det på engelska. Klassen ga.controls.HelpBox översätts till exempel inte till något språk. I den svenska versionen av referenshandboken visas därför klassen ga.controls.HelpBox på engelska.