Menubar Component


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.

DOSYAYI İNDİR

Uygulama:

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.

XML aracılığı ile menübar oluşturma