Supponete di avere un oggetto con più colori (ad esempio una foto digitale) e di non desiderare di ricolorare completamente l'oggetto, ma soltanto modificare il colore di un oggetto, a partire dai colori esistenti. In uno scenario di questo tipo, la classe ColorTransform include una serie di proprietà di offset e moltiplicatrici che possono essere incluse per effettuare questo tipo di modifica. Le proprietà moltiplicatrici denominate
redMultiplier
,
greenMultiplier
,
blueMultiplier
e
alphaMultiplier
funzionano come filtri fotografici colorati (o lenti colorate) e consentono di amplificare o smorzare alcuni colori dell'oggetto di visualizzazione. Le proprietà di offset (
redOffset
,
greenOffset
,
blueOffset
e
alphaOffset
) possono essere utilizzate per aggiungere quantità extra di un determinato colore all'oggetto oppure per specificare il valore minimo che un colore particolare può avere.
Queste proprietà di offset e moltiplicatrici sono identiche alle impostazioni di colore avanzate disponibili per i simboli dei clip filmati nello strumento di creazione di Flash quando si seleziona Avanzato dal menu Colore della finestra di ispezione Proprietà.
Il codice seguente consente di caricare un'immagine JPEG e di applicare una trasformazione del colore che modifica i canali rosso e verde nel momento in cui il puntatore del mouse viene spostato lungo l'asse x e l'asse y. In questo caso, poiché non vengono specificati valori di offset, il valore del colore di ciascun canale visualizzato sullo schermo corrisponde a una percentuale del valore del colore originale dell'immagine; in altre parole, la quantità massima di rosso o verde visualizzata in un dato pixel corrisponde alla quantità originale di rosso o verde di tale 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);