Tree ve Window komponentlerin ilkinde bir XML
dosyasından veri alarak, diğerinde ise sadece kodları kullanarak
bir çalışma oluşturmuştuk. Burada değişik bir çalışma olması açısından
verileri bir XML dosyasından almadan sadece bir XML nesnesi oluşturup
buna kodlarla özellik atayarak dinamik bir prosedür uygulanmıştır.
Bu menüyü diğer yöntemlerle oluşturmakta mümkündür. Dosyamızda
menüye ait elemanlara tıklayarak sahnedeki ilgili karelere atlama
amacı güdülmüştür.
1- Sahneye bir menu komponent
sürükleyip bırakalım, bu menüyü seçip klavyeden delete
tuşuna basarak silelim. Sembol sahneden silinmesine
rağmen kütüphanede hazır olarak bekleyecektir.
Bunu daha sonra kodlarla sahneye import edeceğiz.
2- Aynı tree komponentte olduğu
gibi alta yeni bir layer ekleyelim.Bu layerın ilk karesini boş
bırakalım ve 2.,3.,4.,5. ve 6.karelere bir keyframe
atayalım.Bu son 5 kareye menüye tıklandığında gidilecek 5 ayrı
resim(veya animasyon) ekleyelim. Tüm çalışma bu kadar.
3- Kodları eklemeye başlayabiliriz.
1.layerdaki boş duran tek kareye tıklayarak actionscript panelini
açın ve şu kodları ekleyin (Açıklamalar kod üzerine eklenmiştir):
/*MenuDataProvider class
ile dekore edilmiş bir XML nesnesi oluşturu
luyor*/
stop();
var degisken = new XML();
/*Resim1 isimli ilk eleman oluşturuluyor
ve elemana Resim1a,1b ve 1c
isimli 3 alt grup ekleniyor.Resim1 elemanı üzerine gelindiğinde
bu alt
gruplar açılacaktır*/
var eleman1 = degisken.addMenuItem({label:"Resim-1"});
eleman1.addMenuItem({label:"Resim-1a", instanceName:"resim1a"});
eleman1.addMenuItem({label:"Resim-1b", instanceName:"resim1b"});
eleman1.addMenuItem({label:"Resim-1c", instanceName:"resim1c"});
/*2.ve 3. iki ana grup daha ekleniyor.Bu
3 ana gruptan sonra bir separa
tor ve menüyü kapatmak için 4. ve son ana eleman ekleniyor*/
degisken.addMenuItem({label:"Resim-2", instanceName:"resim2"});
degisken.addMenuItem({label:"Resim-3", instanceName:"resim3"});
degisken.addMenuItem({type:"separator"});
degisken.addMenuItem({label:"Menüyü Kapat", instanceName:"kapat"});
/*Sahneden sildiğimiz ama kütüphanede mevcut
olan menu adını atadığımız
menüyü sahneye import ediyoruz*/
var menu = mx.controls.Menu.createMenu(_root, degisken);
/*Bu menünün sahnede yerleşeceği x ve y
koordinatlarını oluşturuyoruz*/
menu.show(1, 1);
/*Yeni bir nesne oluşturup bu nesneye elemanlara
her tıklandığında deği
şen o elemana ait instance name`i tesbit eden bir fonksiyon oluşturuyo
ruz.switch ve case dallanması ile bu isim değerlendirilerek ilgili
kare
ye geçiş komutu atanıyor*/
var secimNesnesi = new Object();
secimNesnesi.change = function( eventObject ){
var secilen = eventObject.menu;
var secilenFrame = eventObject.menuItem;
switch ( secilenFrame ) {
case secilen.resim1a:
_root.gotoAndStop(2)
break;
case secilen.resim1b:
_root.gotoAndStop(3)
break;
case secilen.resim1c:
_root.gotoAndStop(4)
break;
case secilen.resim2:
_root.gotoAndStop(5)
break;
case secilen.resim3:
_root.gotoAndStop(6)
break;
/*Şayet hiçbir instance name elde edilmezse
varsayılan değer olarak me
nünün kapatılması sağlanıyor*/
default:
trace ("Menü kapatılıyor");
break;
}
}
/*secimNesnesi`ne atadığımız bu değerleri
ve change fonksiyonunu menümü
ze yerleştiriyoruz*/
menu.addEventListener("change",secimNesnesi);