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