Bu bölümde tamamen dinamik yöntemle combobox hazırlama ve herbir elemandan farklı bir web sayfası açma yönteminden bahsedilecektir. Kullanılacak olan yöntemde combobox için kullanılanacak kodların büyük bir kısmı eklenmeye çalışılmıştır.
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','180','height','150','title','combobox component','src','combobox_component','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','combobox_component' ); //end AC code
DOSYAYI İNDİR
Uygulama:
1- Flash programını açıp components panelinden (panel açık değilse Ctrl+F7 tuşuna basarak açabilirsiniz) bir combobox bileşenini sahneye sürükleyip bırakın.
2- Sahnedeki bu componenti seçip delete tuşuna basarak silin.Şu an sahnede hiçbir eleman yoktur.Ama kütüphaneyi açıp bakarsanız componentin burada durduğunu görürsünüz. İşte biz bu componenti dinamik yöntemle kodlarla çağırıp kullanacağız.Timeline üzerindeki mevcut tek kareyi tıklayarak seçip actionscript panelini açın ve şu kodları ekleyip filmi test edin:
import fl.controls.ComboBox;
import fl.data.DataProvider;
import flash.net.navigateToURL;
var aramamotorlari:Array = new Array(
{label:"Google",data:"http://www.google.com.tr/"}, {label:"Yahoo",data:"http://www.yahoo.com/"},
{label:"Netbul",data:"http://www.netbul.com/"}, {label:"Arabul",data:"http://www.arabul.com/"},
{label:"Altavista", data:"http://www.altavista.com/"}, {label:"Hemenbul", data:"http://www.hemenbul.com/"}
);
var combo:ComboBox = new ComboBox();
combo.dropdownWidth = 160;
combo.width = 150;
combo.move(10,10);
combo.prompt = "Bir arama motoru seçiniz";
combo.dataProvider = new DataProvider(aramamotorlari);
combo.addEventListener(Event.CHANGE, linkeGit);
addChild(combo);
function linkeGit(olay:Event):void {
var link:URLRequest = new URLRequest();
link.url = ComboBox(olay.target).selectedItem.data;
navigateToURL(link);
combo.selectedIndex = -1;
}Filmi test ettiğinizde bileşene ait bir elemanı tıkladığınızda ilgili web sayfasını açabilirsiniz.
import fl.controls.ComboBox;
import fl.data.DataProvider;
import flash.net.navigateToURL; Burada 3 sınıfa ait tüm kodlar sahneye import edilmektedir. Actionscript 3 de hangi yöntem olursa olsun bir dinamik çalışma yapacaksanız mutlaka ilgili sınıfı sahneye import etmelisiniz. Burada tüm combobox kontrol kodları, dataprovider(veri sağlayıcı:Bu bileşene ait elemanları ve ona ait verileri oluşturur) ve navigateToURL (ilgili url adresine gitmek için gereken kodları) sınıfı sahneye import edilmiştir.
var aramamotorlari:Array = new Array(
{label:"Google",data:"http://www.google.com.tr/"}, {label:"Yahoo",data:"http://www.yahoo.com/"},.............................
Burada bir dizi oluşturulmaktadır.Dizinin her elemanı 2 bölüm içermektedir.İlki combobox açıldığında görülen label isimleri, diğeri bu ismlere ait data değerleridir.data değerleri ilgili label tıklandığında gidilecek adresin ismini barındırmaktadır.
var combo:ComboBox = new ComboBox(); şayet sahnedeki combobox`u silmeyip bir isim atasaydık bu koda gerek kalmazdı. Ama biz kütüphanedeki bileşeni ancak bu komut ile çağırabiliyoruz.Dikkat ettiyseniz ona combo şeklinde bir isim de atanmıştır.
combo.dropdownWidth = 160; menü tıklanarak açıldığında bu bileşene ait alt elemanları içeren panelin genişlik değeri atanıyor(opsiyonel bir koddur)
combo.width = 150;
combo.move(10,10); Bileşenin genişiliği ve swf dosyası açıldığında bileşenin x ve y koordinatı atanıyor. Opsiyoneldir , yazmazsanız varsyılan değerler atanır.
combo.prompt = "Bir arama motoru seçiniz"; Opsiyoneldir.Bir başlık olmasını istiyorsanız yazabilirsiniz.
combo.dataProvider = new DataProvider(aramamotorlari); Dizi elemanları ve data değerleri bileşene aktarılıyor.
combo.addEventListener(Event.CHANGE, linkeGit); Bileşene ait eleman tıklandığında linkeGit isimli fonksiyonu çalıştırıyor.
addChild(combo); Dinamik bir çalışma yapmak için import komutundan sonra şart olan ikinci komut bu.Üstte yazılan tüm kodların çalışması için combo ismi verilen bu bileşene addChild komutu eklenmelidir.Bu kod sahneye bileşen eklenip properties panelinden isimlendirildiğinde kullanılmazlar.Sadece dinamik çalışmalar içindir.
Herşey tamam, geriye sadece tıklandığında çalıştırılacak fonksiyonun yazılması kaldı.
function linkeGit(olay:Event):void {
var link:URLRequest = new URLRequest();
link.url = ComboBox(olay.target).selectedItem.data;
navigateToURL(link);
combo.selectedIndex = -1;
}
Fonksiyonda parantez içinde ne amaç için kullanıldığı yazılır.Void daha önce söylenmişti. var link:URLRequest = new URLRequest(); bu dizinde diğer örneklerde vardı.Bir link içerecek olan değişkenimiz atanır.
link.url = ComboBox(olay.target).selectedItem.data;Bu dizin combobox ismine tıklandığında o ismi ait atanmış olan değeri yani dizi oluşturduğumuzda data: den sonra yazılan kısmı atar. Bu actionscript2 deki combo.selectedItem.data dizinine eşdeğerdir.
navigateToURL(link); bu dizin ilgili sayfaya ait adresin atanmasını sağlar.
combo.selectedIndex = -1; Bu opsiyonel bir koddur.Yazılmazsa varsayılan işlem yapılır.Varsayılan işlemde şu olur: Combobox açılıp diyelim 2.elemanı tıkladınız.Tıklama sonrası bu eleman ismi en üste gelir ve bir arama motoru seçiniz yazısının yerini alır.Bu değer için örneğin 1 yazarsak: İlk eleman sıfırıncı elemandır.2.eleman ise 1 nolu elemandır.Hangi seçeneği tıklarsanız tıklayın , tıklama sonrası bir arama motoru seçin yazının yerini bu eleman adı alır.Şayet bizim yaptığımız gibi -1 yazarsanız hiçbir değişiklik olmaz.Menüde nereyi tıklarsanız tıklayın bir arama motoru seçin yazısı sabit kalır.