DisplayObject renklerini ayarlama

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Bir görüntüleme nesnesinin rengini ayarlamak için ColorTransform sınıfının (flash.geom.ColorTransform) yöntemlerini kullanabilirsiniz. Her görüntüleme nesnesi, Transform sınıfının bir örneği olan transform özelliğine sahip olup görüntüleme nesnesine uygulanan çeşitli dönüştürmeler (örn. döndürme, ölçek ve konumdaki değişiklikler, vb.) hakkında bilgi içerir. Transform sınıfı, geometrik dönüştürmeleri hakkındaki bilgilere ek olarak, ColorTransform sınıfının bir örneği olan colorTransform özelliğini de içerir ve renk ayarlamaları yapılması için görüntüleme nesnesine erişilmesini sağlar. Bir görüntüleme nesnesinin renk dönüştürme bilgilerine erişmek için, bunun gibi bir kod kullanabilirsiniz:

var colorInfo:ColorTransform = myDisplayObject.transform.colorTransform;

Bir ColorTransform örneği oluşturduktan sonra, hangi renk dönüştürmelerinin uygulanmış olduğunu öğrenmek için bu örneğin özellik değerlerini okuyabilir veya görüntüleme nesnesine renk değişiklikleri yapmak için bu değerleri ayarlayabilirsiniz. Herhangi bir değişiklikten sonra görüntüleme nesnesini güncellemek için, ColorTransform özelliğini transform.colorTransform özelliğine yeniden atamanız gerekir.

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

Kod ile renk değerlerini ayarlama

Görüntüleme nesnesine belirli bir kırmızı, yeşil, mavi (RGB) renk değeri atamak için ColorTransform sınıfının color özelliği kullanılabilir. Aşağıdaki kod, kullanıcı blueBtn adında bir düğmeyi tıklattığında square adındaki görüntüleme nesnesinin rengini değiştirmek için color özelliğini kullanır:

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

color özelliğini kullanarak görüntüleme nesnesinin rengini değiştirdiğinizde, nesnenin önceden birden çok renk içermiş olup olmadığına bakılmaksızın, bunun nesnenin tamamının rengini değiştireceğini unutmayın. Örneğin, üst kısmında siyah metnin bulunduğu yeşil bir daire içeren bir görüntüleme nesnesi varsa, bu nesnenin ilişkilendirilmiş ColorTransform örneğinin color özelliğinin kırmızı bir gölgeye ayarlanması, nesnenin tamamını, daireyi ve metni kırmızıya dönüştürür. (Böylece metin artık nesnenin geri kalanından ayırt edilemez.)

Kod ile renk ve parlaklık efektlerini değiştirme

Birden çok renk içeren bir görüntüleme nesneniz (örn. dijital bir fotoğraf) olduğunu ve nesneyi tamamen yeniden renklendirmek istemediğinizi; varolan renkleri esas alarak yalnızca bir görüntüleme nesnesinin rengini ayarlamak istediğinizi varsayın. Bu senaryoda, ColorTransform sınıfı bu tür ayarlama yapmak için kullanabileceğiniz bir dizi çarpan ve uzaklık özelliklerini içerir. redMultiplier, greenMultiplier, blueMultiplier ve alphaMultiplier adı verilen çarpan özellikleri, görüntüleme nesnesindeki belirli renkleri çoğaltıp azaltarak renkli fotoğraf filtreleri (veya renkli güneş gözlükleri) gibi çalışır. Uzaklık özellikleri (redOffset, greenOffset, blueOffset ve alphaOffset), nesneye fazladan miktarda belirli bir renk eklemek veya belirli bir rengin sahip olabileceği minimum değeri belirtmek için kullanılabilir.

Bu çarpan ve uzaklık özellikleri, Özellik denetçisindeki Renk açılır menüsünden Gelişmiş'i seçtiğinizde Flash geliştirme aracında film klibi sembolleri için kullanılabilir olan gelişmiş renk ayarlarının aynısıdır.

Aşağıdaki kod, bir JPEG görüntüsü yükler ve buna fare işaretçisi x ekseni ve y ekseni boyunca hareket ettikçe kırmızı ve yeşil kanallarını ayarlayan bir renk dönüştürmesi uygular. Bu durumda, herhangi bir uzaklık değeri belirtilmediğinden, ekranda görüntülenen her renk kanalının renk değeri, görüntüdeki orijinal renk değerinin bir yüzdesi olur, başka bir deyişle belirli bir pikselde görüntülenen en yüksek kırmızı veya yeşil, o pikseldeki orijinal kırmızı ya da yeşil miktarı olur.

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