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