Justera färger i DisplayObject

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Du kan använda metoderna för klassen ColorTransform (flash.geom.ColorTransform) för att justera färgen på ett visningsobjekt. Alla visningsobjekt har egenskapen transform som är en instans av klassen Transform och innehåller information om olika omformningar som används för visningsobjektet (till exempel rotation, ändringar i skala eller position). Utöver den här informationen om geometriska omformningar innehåller klassen Transform även egenskapen colorTransform , vilket är en instans av klassen ColorTransform och ger åtkomst till färgjusteringar för visningsobjektet. För åtkomst av informationen för färgomformning för ett visningsobjekt använder du till exempel följande kod:

var colorInfo:ColorTransform = myDisplayObject.transform.colorTransform;

När du har skapat instansen ColorTransform kan du läsa egenskapsvärdena och ta reda på vilka färgomformningar som redan används, eller också kan du ange dessa värden för att göra visningsobjektets färgändringar. För att uppdatera visningsobjektet efter gjorda ändringar måste du omtilldela ColorTransform-instansen tillbaka till egenskapen transform.colorTransform .

var colorInfo:ColorTransform = myDisplayObject.transform.colorTransform; 
 
// Make some color transformations here. 
 
// Commit the change. 
myDisplayObject.transform.colorTransform = colorInfo;

Inställningar av färgvärden med kod

Egenskapen color för klassen ColorTransform kan användas vid tilldelning av ett specifikt färgvärde för rött, grönt eller blått (RGB) för visningsobjektet. I följande exempel används egenskapen color för att ändra färgen på visningsobjektet square till blått, när användaren klickar på knappen blueBtn :

// square is a display object on the Stage. 
// blueBtn, redBtn, greenBtn, and blackBtn are buttons on the Stage. 
 
import flash.events.MouseEvent; 
import flash.geom.ColorTransform; 
 
// Get access to the ColorTransform instance associated with square. 
var colorInfo:ColorTransform = square.transform.colorTransform; 
 
// This function is called when blueBtn is clicked. 
function makeBlue(event:MouseEvent):void 
{ 
    // Set the color of the ColorTransform object. 
    colorInfo.color = 0x003399; 
    // apply the change to the display object 
    square.transform.colorTransform = colorInfo; 
} 
 
blueBtn.addEventListener(MouseEvent.CLICK, makeBlue);

Observera, att när du ändrar visningsobjektets färg med egenskapen color ändras objektets färg helt, oavsett om det tidigare hade flera färger. Om till exempel ett visningsobjekt innehåller en grön cirkel med svart text över och du anger egenskapen color för objektets ColorTransform-instans med en röd nyans, kommer hela objektet (cirkel och text) att bli rött och texten går inte att urskilja från resten av objektet.

Ändra färg och intensitetseffekter med kod

Anta att du har ett visningsobjekt med flera färger (till exempel ett digitalt foto) och du inte helt vill ändra färg på objektet. Du vill bara justera färgen på visningsobjektet baserat på befintliga färger. I det här fallet finns det i klassen ColorTransform flera multiplikator- och offsetegenskaper som kan användas. Multiplikatoregenskaperna som heter redMultiplier , greenMultiplier , blueMultiplier och alphaMultiplier fungerar som färgade fotofilter (eller solglasögon) och förstärker eller försvagar vissa färger i visningsobjektet. Offsetegenskaperna ( redOffset , greenOffset , blueOffset och alphaOffset ) kan användas för att lägga till extra mycket av vissa färger till ett objekt eller ange ett minimumvärde som en specifik färg kan ha.

Dessa multiplikator- och offsetegenskaper är identiska med de avancerade färginställningarna som finns för filmklippssymboler i utvecklingsverktyget när du väljer Avancerat i snabbmenyn Färg i egenskapsinspektören.

Med följande kod läser du in en JPEG-bild och använder en färgomformning, vilket ändrar de röda och gröna kanalerna när muspekaren flyttar längs x- och y-axeln. I det här fallet, eftersom inga offsetvärden har angivits, kommer färgvärdet för respektive färgkanal som visas på bildskärmen att vara en procentandel av det ursprungliga färgvärdet i bilden. Detta innebär att det mest röda eller gröna som visas i en given pixel kommer att få den ursprungliga mängden rött eller grönt i pixeln.

import flash.display.Loader; 
import flash.events.MouseEvent; 
import flash.geom.Transform; 
import flash.geom.ColorTransform; 
import flash.net.URLRequest; 
 
// Load an image onto the Stage. 
var loader:Loader = new Loader(); 
var url:URLRequest = new URLRequest("http://www.helpexamples.com/flash/images/image1.jpg"); 
loader.load(url); 
this.addChild(loader); 
 
// This function is called when the mouse moves over the loaded image. 
function adjustColor(event:MouseEvent):void 
{ 
    // Access the ColorTransform object for the Loader (containing the image) 
    var colorTransformer:ColorTransform = loader.transform.colorTransform; 
     
    // Set the red and green multipliers according to the mouse position. 
    // The red value ranges from 0% (no red) when the cursor is at the left 
    // to 100% red (normal image appearance) when the cursor is at the right. 
    // The same applies to the green channel, except it's controlled by the 
    // position of the mouse in the y axis. 
    colorTransformer.redMultiplier = (loader.mouseX / loader.width) * 1; 
    colorTransformer.greenMultiplier = (loader.mouseY / loader.height) * 1; 
     
    // Apply the changes to the display object. 
    loader.transform.colorTransform = colorTransformer; 
} 
 
loader.addEventListener(MouseEvent.MOUSE_MOVE, adjustColor);