Flash'ta Nesnelere Level'ler arası erişme

Adobe Flash çalışmalarınızda levellar arasında AS 2.0 ile erişmenin yolları.


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.
  • Etiketler;
Ercan Altuğ Yılmaz
1981 İstanbul doğumlu. Öğrencilik kariyerine Maltepe Üniversitesinde e-MBA yaparak devam etmektedir. <p>Eğitmenliğe 2000 yılında Akademi-İstanbul'da Web Tasarımı eğitimleri vermekle başladı. İznik Akademisi, Digiturk, Medyasoft, SmartPRO gibi yerlerden sonra, şu an Netron Bilişim Akademisi Web & Grafik Tasarım Ürünleri Eğitmenidir. <p> Sanalkurs.net üzerindeki dersleriyle de sizlere yol göstermeye devam edecek.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Teşekkürler faydalı oldu.Bu konuda foruma birde soru yazmıştım.Cevap gibi olmus.
Selamlar, fla ile olan bir çalışma örneği birçok kişiyi daha çok ve çabuk aydınlatacaktır diye düşünüyorum iyi yazmışsınız hatta bunun ötesinde birkaç yerli ve yabancı makaleler okudum ama örnekli güzel bir çalışma gerçekten bulamadım acaba hazırlanabilirmi böyle bir çalışma çok teşekkür ediyorum. Not. Derslerinizin sıkı bir takipçisiyim çok sağolun güzel işler yapıyorsunuz.
teşekkürler. daha çok dersle katkıda bulunmanız bizi daha çok eğitecektir.çok şey öğreniyoruz yazılarınızdan.sitenizden de faydalanıyoruz.tekrar teşekkürler...
Bi adam çizdim ve onu sağa sola götürebiliyorum. Bu bi oyun.Adamın engellerden atlaması ve çarptığı taktirde düşmesi gerekiyor.flash adamın engele çarptığını nası anlayacak.ve her engelden kurtulduğunda nasıl puan arttıracağız?cok tsk.
alakalı değil ama güncel olduğu için soruyorum Arkadaşlar şimdi yapılmış bi flash var.Bu flash kapı şeklinde kapıya geliyor kapı açılıyor içeriye giriyor ama otomatik giriyor sonra indexe falan yönlendiriyor.Benim derdim şu bu kapıya gelince ben bunu durdurdum ve kapıya 2 tane buton koydum.Butonlara basınca içeri girmeye devam etcek ve bi indexe yönlencek öbürkü butona basınca içeri girişe devam edecek ve başka indexe yönlencek..Yani kapıda 2 buton olacak hangisine basarsa başka siteye gidecek.Yalnız esas sorun dediğim gibi direk içeri giden flashın kapıda durması ve butonlara basınca devam etmesi.Bunu nasıl çözerim acaba

Yukarı Git