Aşağıdaki menuBar çalışmasında her menü için
2 dallanma yapılmış ve getURL komutu ile ilgili web sayfasına
bağlantı sağlanmıştır. Çalışma 58 kb civarındadır.Aynı çalışmayı
component kullanmadan çok daha düşük boyutta hazırlamak mümkündür.Önerim
bu tür bir menünün kullanılmaması yönünde olmakla beraber yine
de isteyen arkadaşlarımıza bu örnek yeterli açıklamayı sağlayacaktır.
Örneğimiz ultrashock sayfasından alınıp modifiye edilmiştir.
1- Component panelinden sahneye
bir menuBar sürükleyin ve instance name alanına myMenuBar
yazın.
2- Sahnedeki tek kareye şu komutları
atayın:
//Menubarın en ve boyu
ayarlanıyor
myMenuBar.setSize(140,22)
//İlk menü olan linkler ekleniyor
var linkMenu = myMenuBar.addMenu ( "Linkler" );
//Link menüsünün alt grup adları ve instance
name`leri oluşturuluyor
linkMenu.addMenuItem ( { label: "Macromedia", instanceName:
"macromedia_ins" } );
linkMenu.addMenuItem ( { type: "separator" } );
linkMenu.addMenuItem ( { label: "Flaskit", instanceName:
"flashkit_ins" } );
//Forum adında ikinci menü ve alt grupları
oluşturuluyor
var forumMenu = myMenuBar.addMenu ( "Forum" );
forumMenu.addMenuItem ( { label: "Flashokulu", instanceName:
"flashokulu_ins" } );
forumMenu.addMenuItem ( { type: "separator" } );
forumMenu.addMenuItem ( { label: "Macromediaturk", instanceName:
"macromediaturk_ins" } );
//Menü alt grupları seçildiğinde yönlenmesi
gereken linkler yaratılıyor
var linkMenuListener = new Object();
linkMenuListener.change = function( eventObject ){
var theMenu = eventObject.menu;
var theMenuItem = eventObject.menuItem;
switch ( theMenuItem )
{
case theMenu.macromedia_ins:
getURL("http://www.macromedia.com","_blank");
break;
case theMenu.flashkit_ins:
getURL("http://www.flashkit.com","_blank");
break;
default:
trace ("Hiçbir seçim yapılmadı");
break;
}
}
linkMenu.addEventListener("change",linkMenuListener);
//Yukardaki işlemlerin aynısı forum menüsü
için oluşturuluyor
var forumMenuListener = new Object();
forumMenuListener.change = function( eventObject ){
var theMenu1 = eventObject.menu;
var theMenuItem1 = eventObject.menuItem;
switch ( theMenuItem1 )
{
case theMenu1.flashokulu_ins:
getURL("http://www.flashokulu.com/forum","_blank");
break;
case theMenu1.macromediaturk_ins:
getURL("http://www.macromediaturk.com/forum","_blank");
break;
default:
trace ("Hiçbir seçim yapılmadı");
break;
}
}
forumMenu.addEventListener("change",forumMenuListener);
Barı oluşturmak için önce *.addMenu
komutu ile linkler ve forum adında 2 menü eklenir ve *.addMenuItem
ile alt gruplar ve bu gruplara ait instance name oluşturulur.Buradaki
separator eklnetisi opsiyoneldir.Yazılmazsa alt grupları oluşturan
bölme kaybolur. Daha sonra *.change = function( eventObject
) klasik girişi ile bir fonksiyon oluşturulur. Bu fonksiyon
daha sonra oluşturulan switch.. case dallanması
ile hangi menünün seçildiğini algılayarak ilgili web alanına getURL
komutu ile yönlenir. İsterseniz bu dallanma yerine if
else dallanmasını da kullanabilirsiniz.
MenuBar Component Kodları
MenuBar.addMenu()
Yukardaki örnekte gördüğünüz gibi bara ana menüleri
ekler.Her eklenti için aynı kodlrı tekrar yazmalısınız.
addMenuAt():
addMenu komutu gibidir. Tek bir menü eklemek
istediğinizde kullanabilirsiniz.Parantez içideki parametrelerden
ilki index değeri sonraki ise menünün adını temsil eder.Yukardaki
örneğin kodlarını silerek bu kodları yapıştırıp filmi test edin:
menu = myMenuBar.addMenuAt(0,"linkler");
menu.addMenuItem({label:"Macromedia Flash", instanceName:"macroInst"});
menu.addMenuItem({label:"Flashkit", instanceName:"flashIns"});
MenuBar.dataProvider():
menuBar.dataProvider bir XML node nesnesidir.XML
dosyası içinde oluşturulmuş menü örneğinin componente işlenmesini
sağlar. Burada asıl yükü menüyü oluşturan XML dosyası yüklenir.Bu
dosya hazırlandıktan sonra alttaki kodlarla klasik yükleme işlemini
yapabilirsiniz:
//Flash help bölümünden alıntıdır
var myMenuBarDP = new XML();
myMenuBarDP.load("http://myServer.myDomain.com/source.xml");
myMenuBarDP.onLoad = function(success){
if(success){
myMenuBar.dataProvider = myMenuBarDP;
} else {
trace("error loading XML file");
}
}
MenuBar.getMenuAt():
myMenuBar.getMenuAt(index); şeklinde kullanılır.İndex
değeri verilen menünün referansını döndürür.Yazılan index değerinde
mevcut bir menü yoksa tanımlanmamış değeri alınır.
MenuBar.getMenuEnabledAt():
myMenuBar.getMenuEnabledAt(index); şeklinde kullanılır.İndex
parametresi bara ait menünün index değeridir.Menünün seçili olup
olmadığını gösteren true veya false şeklinde bir boolean değeri
döndürür.
MenuBar.labelField:
Menüde label metni olarak kullanılan her XML
nodunun özelliğini belirleyen bir string`dir.Varsayılan değer
label`dır.dataProvider özelliğini ayarladıktan sonra elde edilebilecek
salt okunur bir değer olarak döner.
MenuBar.removeMenuAt() :
Menüdeki belirlenmiş bir index değerine sahip
elemanı çıkartır:
myMenuBar.removeMenuAt(4);
//Menüdeki 4 index değerine sahip eleman menüden çıkartılır.
MenuBar.setMenuEnabledAt():
Verilen index değerindeki elemanı seçili kılar:
myMenuBar.setMenuEnabledAt(3);
Yukarıdaki çalışamanın aynısını bir XML dosyası
kullanarak yapabilirsiniz.Bu örnekde diğeri gibi ultrashock.com
adresinden alınmıştır.XML konumuz dışında olduğundan detaylara
girilmiyecek.Dosyayı alttaki linkten indirebilirsiniz.