Ajuste das cores de DisplayObject

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Você pode usar os métodos da classe ColorTransform (flash.geom.ColorTransform) para ajustar a cor de um objeto de exibição. Cada objeto de exibição tem uma propriedade transform , que é uma ocorrência da classe Transform, e contém informações sobre várias transformações que são aplicadas no objeto de exibição (como rotação, alterações na escala ou posição e assim por diante). Além de informações sobre transformações geométricas, a classe Transform também inclui uma propriedade colorTransform , que é uma ocorrência da classe ColorTransform e fornece acesso para fazer ajustes de cor no objeto de exibição. Para acessar as informações de transformação de cor de um objeto de exibição, você pode usar um código como esse:

var colorInfo:ColorTransform = myDisplayObject.transform.colorTransform;

Depois de criar uma ocorrência de ColorTransform, você pode ler os valores de propriedade para descobrir quais transformações de cor já foram aplicadas ou definir esses valores para alterar cores no objeto de exibição. Para atualizar o objeto de exibição depois de fazer alterações, atribua novamente a ocorrência de ColorTransform à propriedade transform.colorTransform .

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

Definição de valores de cor com código

A propriedade color da classe ColorTransform pode ser usada para atribuir um valor de cor RGB (vermelho, verde e azul) específico ao objeto de exibição. O exemplo a seguir usa a propriedade color para alterar a cor do objeto de exibição chamado square como azul quando o usuário clicar no botão 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);

Observe que, ao alterar a cor de um objeto de exibição usando a propriedade color , a cor do objeto inteiro é alterada, independentemente de o objeto ter várias cores anteriormente. Por exemplo, se houver um objeto de exibição que contém um círculo verde com texto preto na parte superior, definir a propriedade color da ocorrência de ColorTransform associada desse objeto como uma sombra vermelha faz com que o objeto inteiro, círculo e texto, fique vermelho (de modo que o texto não será mais diferenciado do restante do objeto).

Alteração de efeitos de brilho e cor com código

Digamos que você tenha um objeto de exibição com várias cores (por exemplo, uma foto digital) e não queira colorir o objeto inteiro novamente; você quer apenas ajustar a cor de um objeto de exibição com base nas cores existentes. Nesse cenário, a classe ColorTransform inclui uma série de propriedades de multiplicador e deslocamento que podem ser usadas para fazer esse tipo de ajuste. As propriedades de multiplicador, chamadas redMultiplier , greenMultiplier , blueMultiplier e alphaMultiplier , funcionam como filtros fotográficos coloridos (ou óculos de sol coloridos), intensificando ou ofuscando algumas cores no objeto de exibição. As propriedades de deslocamento ( redOffset , greenOffset , blueOffset e alphaOffset ) podem ser usadas para aumentar a quantidade de uma determinada cor no objeto ou para especificar o valor mínimo que uma cor específica pode ter.

Essas propriedades de multiplicador e deslocamento são idênticas às configurações de cor avançadas que estão disponíveis para símbolos de clipe de filme na ferramenta de criação do Flash quando você escolhe Avançado no menu pop-up Cor no Inspetor de propriedades.

O código a seguir carrega uma imagem JPEG e aplica uma transformação de cor nela, ajustando os canais vermelho e verde à medida que o ponteiro do mouse se move ao longo dos eixos x e y. Nesse caso, como nenhum valor de deslocamento foi especificado, o valor de cada canal de cor exibido na tela será uma porcentagem do valor de cor original na imagem - a maior parte de vermelho ou verde exibida em um pixel é a quantidade original de vermelho ou verde nesse pixel.

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);