Bu bölümde dinamik olarak çizilmiş bir klip rengini ColorPixer bileşeni ile değiştirme yöntemini göreceğiz.
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','400','height','180','title','ColorPixer','src','cs3_colorpixer','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','cs3_colorpixer' ); //end AC code
DOSYAYI İNDİR
Uygulama:
1- Flash programını açıp sahnenin sağ yanına components panelinden (panel açık değilse Ctrl+F7 tuşuna basarak açabilirsiniz) bir colorPixer çekip bırakın. Properties panelinden ismini renkKutusu olarak atayın
2- Ana sahne 1.kareyi tek tıklama ile seçin ve actionscript panelini açın (açık değilse F9 tuşu ile açabilirsiniz) ve şu kodları ekleyip çalışmanızı test edin:
import fl.events.ColorPickerEvent;
var kutu:MovieClip = new MovieClip();
kutuCiz(kutu, 0xFF0000);
addChild(kutu);
renkKutusu.addEventListener(ColorPickerEvent.CHANGE,renkDegistir);
function renkDegistir(event:ColorPickerEvent):void {
kutuCiz(kutu, event.target.selectedColor);
}
function kutuCiz(film:MovieClip,renk:uint):void {
film.graphics.beginFill(renk, 1);
film.graphics.drawRect(10, 10, 75, 50);
film.graphics.endFill();
}
Yeni bir bileşen olan ColorPixer bileşen kodları şu şekilde açıklamak mümkün:
import fl.events.ColorPickerEvent; Artık çok iyi alışmamız gereken bir kod grubu. Bu kod ile bileşene ait tüm olayları çağırmış oluyoruz. Bu kod grubunu çağırmazsanız biraz sonra anlatacağımız Change olayını çalıştırmanız mümkün olmaz. Bileşene ait olayları 4 grupta toplayabiliriz:
-ColorPickerEvent.CHANGE: Kullanıcı bileşende farklı bir renge tıkladığı zaman çalışır.
-ColorPickerEvent.ENTER: Kullanıcı bileşen üzerinde farklı bir renk üzerine fare imleçini getirip klavyeneb enter tuşuna bastığında çalışır.
-ColorPickerEvent.ITEM_ROLL_OUT: Kullanıcı bileşen üzerinde farklı bir renk üzerine fare imlecini getirdikten sonra imleci bu renk üzerinde ayırdığı an çalışır
-ColorPickerEvent.ITEM_ROLL_OVER: Kullanıcı bileşen üzerinde farklı bir renk üzerine fare imlecini getirdiği an çalışır
var kutu:MovieClip = new MovieClip();
kutuCiz(kutu, 0xFF0000);
addChild(kutu);
Üstteki kod grubu ile dinamik bir film klibi çiziyoruz ve rengini kırmızı olarak değiştiriyoruz. Bu renk dinamik çizimle sağlanan klibin sahnede ilk görüldüğü renktir. Buradaki kutuCiz bir fonksiyondur.Üstteki kodların en alt kısmında klibin dinamik çizimini sağlayan bir fonksiyondur.Bu fonksiyondaki renk parametresine 0xFF0000 yani kırmızı renk atayarak ilk görünen dinamik çizimi sağlar. addChild(kutu); Alışmanız gereken diğer bir kod grubuda budur.Tüm dinamik yöntem kullandığınız çalışmalarda bu kod grubunu kullanmak zorundasınız.Bu dinamik yöntemler sembol,çizim,metin kutusu veya bileşen ekleme olabilir. addChild kodu ile kutu isimli klibe bir üstte yazılan fonksiyonlara ait özellikler atanmış olur.
function renkDegistir(event:ColorPickerEvent):void {
kutuCiz(kutu, event.target.selectedColor);
}
Gördüğünüz gibi bu fonksiyon parantez içinde belirtilen Renk Kutusu bileşenine ait bir olay ile ( yani change=tıklama yöntemi ile) çalıştırılabilen bir fonksiyondur.Bu fonksiyon başka bir fonksiyonu çağırmaktadır.Çağrılan bu fonksiyonla parantez içinde yazılmış olan kutu adlı klibin rengini event.target.selectedColor komutu ile (Bu komut renk kutusunu tıkladığımızda o renge ait değeri döndürür) seçtiğimiz renge çevirir.
function kutuCiz(film:MovieClip,renk:uint):void {
film.graphics.beginFill(renk, 1);
film.graphics.drawRect(10, 10, 75, 50);
film.graphics.endFill();
}İki kez çağrılan fonksiyon kodları üstteki gibidir. Fonksiyonun 2 parametresi vardır.Film fonksiyonun atanacağı sembolün bir film klibi olacağını ,renk ise kliplerin rengini oluşturacak değerleri taşıyacaktır. uint sınıfı bize 32-bit tamsayı taşıyan veri tipleri ile çalışmamızı sağlayan bir sınıftır. uint ile verilebilecek tamsayı değerleri 0 ile 4.294.967.295 rasında değişir.Ve özellikle pixel renk değerleri için kullanılırlar.Diğer kodlar bir dikdörtgen çizimini yapan as2 ye göre biraz değişmiş olduğunu gördüğünüz kod grubudur.
film.graphics.beginFill(renk, 1);Burada gördüğünüz gibi bir renk ataması kullanılmamış ve renk değişkeni yazılmıştır.Film klibi ilk yüklendiğinde başta anlattığım gibi önce kutuÇiz isimli bir fonksiyon bu fonksiyonu çağırmakta idi.İki dizini alt alta koyup bakarsanız kutuCiz fonksiyonu çağrıldığında renk değişkenine kırmızı renk atandığını görürsünüz.
film.graphics.beginFill(renk, 1);
kutuCiz(kutu, 0xFF0000); Bu nedenle ilk renk kırmızı olmaktadır.Daha sonra renk kutusundan bir renk çağrıldığında
event.target.selectedColor ile elde edilen değer renk değişkenine atanıp kutu klibinin rengini değiştirmiştir.