Blog adresimden gelen epostalarda çoğunluğun bana danıştığı bir konu için yazı yazmam gerekiyordu,ne zamandır aklımdaydı bugüne kısmetmiş. Flash projelerinizde level level tutulan elemanlarınıza birbiri içerisinden erişim için bilmemiz gerekenleri paylaşacağım. Mesela yukarıdaki gibi bir movie klip içerisindeki movie klip içerisindeki butona tıklanınca anasahnedeki başka bir elemanın yerini değiştirmek veya animasyonu durdurmak isteyebilirsiniz,bu ancak Flash mimarisini anlamaktan geçer.Gelin hemen basitçe başlayalım.

Adobe Flash (AS 2.0) projenizde bir elemandan ki bu movie klip olabilir,buton olabilir veya bir graphic bile olabilir,bu elemandan diğer başka bir movie klip içerisine erişmek için mutlaka seviyelerine göre erişmek gerekiyor.Bunun içinde flash üzerinden Actionscriptle erişeceğiniz her unsura bir Instance Name vermeniz gerekir.Ben de yukarıdaki gibi buyukkutu_mc ve daire_btn gibi adlar verdim._mc olmasının nedeni o nesnenin MovieClip olduğunu belirtmek içindir ve eğer actions panelinde buyukkutu_mc yazıp noktaya bastığınızda gelen intellisense tamamıyle bu movieklip olarak tanıtıldığından gelen bir movie klipe ait tüm metodlardır.Aynı şekilde butonlara daire_btn gibi ve yazılara yaz_txt gibi instance name'ler verilir ve actions panelinde onların metodlarına erişilir.

Adobe Flash'ta 2 farklı erişim yöntemi vardır :

1-) Absolute ( Kesin ) erişim
2-) Relative (İlişikli) erişim


Absolute erişim ; kesin hedefler alarak ( mesela anatimeline'ı hedefleyen _root) erişimi sağlar.
Relative erişim ise birbiri içerisinde olan elemanlardan adım adım ilişikli şekilde erişimler tanımlar.
2 yönteminde kendi aralarında artıları ve eksileri bulunmaktadır ama öncelikle gelin öğrenelim sonra da farklı senaryolarda karşılaştıralım.Absolute erişim kesin bir adresleme yolu ile elemanlara erişir demiştik.Alttaki örnek üzerinden anlatacak olursak :
_root kodu ile anasahneye erişilir(bazen _level0 olarakta yazılır) ve _root.buyukkutu_mc kodu ile buyukkutu_mc movie klipine erişilir ve mesela örnek olarak _root.buyukkutu_mc.alpha=0 gibi bir kod ile buyukkutu_mc 'nin alpha yani görünürlük değerini sıfırlayabiliriz.Ve _root ile absolete hedeflendğiniden herhangi bir başka elemana aynı kodu yazarsak yine erişebiliriz.

Bu erişimin az kod ile yazılıp kolay olması gibi avantajları olduğu gibi dezavantajları da olabilir.Mesela absolute hedeflendirerek projenizi geliştirdiğiniz bir çalışmanızı başka bir projeye çağırdığınızda artık _root değişir ve _root.buyukkutu_mc gibi bir erişim mümkün olmayabilir.

Peki tavsiye edilen ve aslında sonuçta aynı erişimi sağlayacak bir diğer yöntem ise relative yani ilişikli erişim sistemidir. Burada bilinmesi gereken alt seviyedeki bir mesela movie klipe buyukkutu_mc ile erişiyoruz,ayrıca bir üst levela _parent ile erişilebiliniyor. Gerektiği yerde alttaki gibi 2 sefer üst levela çıkmak için _parent._parent kullanılabilinir.

Ayrıca relative erişimlerde aynı levellardaki 2 unsur birbirine adıyla erişebildiği gibi _this metoduyla bunu ilişiklendirebilirler.Altta aynı levelda(buyukkutu_mc içerisinde) olan daire_btn butonuna ve kare_mc movieklipinden erişmek için "_this.daire_btn._visible=false" yazabiliriz.Bu hedeflemenin artısı bu çalışma nereye yüklenirse yüklensin _root 'tan bağımsız olacağından aynı şekilde çalışacaktır çünkü ilişikli hedeflenmiştir.


En alttaki paylaştığım Macromedia Paper 'da da tavsiye ettiği üzere projelerinizde relative hedeflendirmeler yapmaya dikkat edin. Ancak elinize absolute hedeflenmiş bir çalışma gelir ve bu içeriği dışarıdan çağırmanız gerekirse tüm kodları teker teker değiştirmemek için _lockroot=true; kodunu ilk farme'e yazın.Bu _root bilgisini kitleyerek ona göre yüklendiğinde hatırlayacak ve kendi _rootunu görecektir,kendi yüklendiği ana timeline rootunu değil.

Ancak bu bir çözüm yöntemidir ASLA tasarım yöntemi değil,eğer AS 2.0 projelerinze yeni başlıyorsanız mutlaka relative ilişiklendirmelerle kodlarınızı yazınız.

Bu yazıdaki örneklere benzer Macromedia Paper notunu indirmek için linke tıklayın.