Menu Component


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.

DOSYAYI İNDİR

Uygulama:

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