var fm_menu:ContextMenu = new ContextMenu();
var copyright:ContextMenuItem = new ContextMenuItem( "Kedi kıpırda!!!!!" );
var credit:ContextMenuItem = new ContextMenuItem( "Barbaros Dicle | Kişisel portfolyo ve blog sitesi." );
copyright.addEventListener( ContextMenuEvent.MENU_ITEM_SELECT, git1 );
credit.addEventListener( ContextMenuEvent.MENU_ITEM_SELECT, git2 );
credit.separatorBefore = false
fm_menu.hideBuiltInItems();
fm_menu.customItems.push(copyright, credit);
this.contextMenu = fm_menu;
function git1(e:Event)
{
cat_mc.x+=10
}
function git2(e:Event)
{
var link:URLRequest = new URLRequest( "http://www.barbarosdicle.com" );
navigateToURL( link, "_blank" );
}
Bu seferki yazıda bir önceki yazımda anlattığım “ActionScript 3.0 addChild, removeChild ve linkage kullanımı.” örneğini hem pekiştirecek hemde geliştirmenizi sağlayacak bir örnek hazırladım. Örnek aslında dinamik olarak kütüphaneyi kullanan herkez için kavranması gereken bir örnek.
Yazının kolay kavranabilmesi için bir benzetmede yapmak istiyorum. Herhangi bir flash programını code yazmadan kullandığımızda izlediğimiz yolla aynı paralelde bu örnek. Flash da kullandığımız layerlar code içinde geçerli gibi düşünebiliriz stage de oluşturduğunuz her nesneye bir layer kullandığınızı varsayın en üst layer da duran movieClip en önde, en alttaki de en arkada yer alacaktır.Bu örneği de bu şekilde yorumlarsanız çok daha hızlı yol alırsınız.
Örenek SWF | ActionScript 3.0
// Linkage yardımı ile kütüphanemizde bulunan movieClipleri tanımlıyoruz
var bjk_mc:bjk=new bjk();
var gs_mc:gs=new gs();
var fb_mc:fb=new fb();
// bu 3 Number değişken ana sahneye ekleyeceğimiz fb_mc,gs_mc ve bjk_mc -
//MovieCliplerinin derinliklerini değiştirebilmemiz için kullanacağımız değişkenler.
var bjkDepth:Number;
var gsDepth:Number;
var fbDepth:Number;
// tanımladığımız MovieClipleri ana sahneye ekliyoruz
addChild(fb_mc);
// konumlama yapıyoruz
fb_mc.x=17;
fb_mc.y=66;
addChild(gs_mc);
gs_mc.x=187;
gs_mc.y=69;
addChild(bjk_mc);
bjk_mc.x=336;
bjk_mc.y=72;
// 3 text alanına MovieClipler eklendikten sonraki derinliklerini "getChildIndex" yardımı ile alıyoruz.
// Not: Aynı işlemi "getChildByName" metotu ile de movieClip isimlerini kullanarakta yapabiliriz (instanceName değil).
bjk_txt.text=String(getChildIndex(bjk_mc));
gs_txt.text=String(getChildIndex(gs_mc));
fb_txt.text=String(getChildIndex(fb_mc));
// "numChildren" bize stage üzerindeki max derinliği toplam olarak verir ama biz kullanırken dizi mantığı ile "0" dan başlayacağımız için 1 eksiltiyoruz.
max_txt.text=String(numChildren-1);
// MovieCliplerin derinliklerini değiştirmemiz için oluşturduğumuz bir click eventi.
bjk_btn.addEventListener(MouseEvent.CLICK, bjkTik);
function bjkTik(e:MouseEvent) {
// kullanıcının girdiği derinliği değişkende tutuyoruz.
bjkDepth=Number(bjk_txt.text);
if (bjkDepth<numChildren) {
// değişkende tuttuğumuz derinliği "setChildIndex" yöntemi ile MovieClibimize uyguluyoruz.
setChildIndex(bjk_mc,bjkDepth);
// yeniden derinlikleri alıyoruz.
bjk_txt.text=String(getChildIndex(bjk_mc));
fb_txt.text=String(getChildIndex(fb_mc));
gs_txt.text=String(getChildIndex(gs_mc));
} else {
max_txt.text="Max Derinlikten yüksek rakkam MAX DEPTH= " + String(numChildren-1);
}
}
fb_btn.addEventListener(MouseEvent.CLICK, fbTik);
function fbTik(e:MouseEvent) {
fbDepth=Number(fb_txt.text);
if (fbDepth<numChildren) {
setChildIndex(fb_mc,fbDepth);
bjk_txt.text=String(getChildIndex(bjk_mc));
fb_txt.text=String(getChildIndex(fb_mc));
gs_txt.text=String(getChildIndex(gs_mc));
} else {
max_txt.text="Max Derinlikten yüksek rakkam MAX DEPTH= " + String(numChildren-1);
}
}
gs_btn.addEventListener(MouseEvent.CLICK, gsTik);
function gsTik(e:MouseEvent) {
gsDepth=Number(gs_txt.text);
if (gsDepth<numChildren) {
setChildIndex(gs_mc,gsDepth);
bjk_txt.text=String(getChildIndex(bjk_mc));
fb_txt.text=String(getChildIndex(fb_mc));
gs_txt.text=String(getChildIndex(gs_mc));
} else {
max_txt.text="Max Derinlikten yüksek rakkam MAX DEPTH= " + String(numChildren-1);
}
}