Flashta Fonksiyon Çeşitleri Ve Kullanımı

Javascript gibi bir dil bilenler için anlaması kolay olan konudur. Dil bilmeyenler içinse fazla bir sorun yoktur. Komut iskeletini ve kullanım şeklini bildikten sonra uygulanması oldukça kolay olacaktır
Flashta Fonksiyon Çeşitleri ve KullanımıFonksiyonların 2 türü vardır.
1- Flash içindeki hazır fonksiyonlar. Bunlar konumuzun dışındadır. getTimer, isFinite vs. gibi hazır fonksiyonlara actionscript panelinde functions bölümünden ulaşabilirsiniz.
2- Kullanıcı tarafından yazılan fonksiyonlar. Temel yapı aşağıdaki gibidir.
functions fonksiyon_adı(parametre){
..............
}
Detaylara geçmeden önce önemli bir konuyu belirtelim. Kullanıcı tarafından yazılan fonksiyonlar sadece bir frame üzerine yazılır. Hazır fonksiyonlardaki gibi bir klip veya butona atanamazlar. Frame üzerinde yazılmış fonksiyonu bir buton veya klipten çağırabilirsiniz. Bu fonksiyonların 4 yazılım şekli vardır.
Altyordam olarak çalışan fonksiyonlar
Bilindiği gibi tüm fonksiyonlar genelde bir değer üretmek için kullanılırlar. Altyordam türü fonksiyonlarda bir değer üretimi sözkonusu değildir. Burada amaç bir kod deposu hazırlamak daha sonra bu kodları gerekli olan yerlerden çağırmaktır.
Altyordam fonksiyonlarını bir fla dosyasında birden fazla yerde aynı komutu kullanmak gerektiğinde çok faydalıdır. Tek bir kelime ile yüzlerce depo kod yığınını çağırma imkanı sunarlar. Özetle bizi yüzlerce aynı tür kodu birden fazla yerde yazma zahmetinden kurtarırlar.
Bunu bir örnekle görelim. Alttaki dosyada örnek adı anaklip olan ve ayrıca içinde 7 tane butonu içeren 7 ayrı klip daha (örnek adları klip_1, klip_2, klip_3.............klip_7) mevcuttur. Anaklip içinde 7 kare vardır. Burada istenilen uygulama şudur:
1 numaralı butona basıldığında bu butonu içeren klip 50 piksel sağa ilerleyecek, diğer 6 buton ilk haline dönecek ve ayrıca anaklip 1 nolu kareye ilerleyecek.
2 nolu butona basınca yine aynı işlemler olacak fakat anaklip 2 nolu kareye atlayacak. Bu işlem 7 buton için de uygulanacak.



[Sadece pasaj sakinleri linkleri görebileceklerdir. lütfen kısa bir vaktinizi ayırın ve pasajımıza üye olun.. ]



Dosya üzerinde deneme de yaptığınıza göre konu iyice şekillenmiş olmalıdır. Bu durumda 7 butona da şu komutu vermeliyiz.
on (release) {
anaklip.gotoAndStop(1);
for (i=1; i<8; i++) {
_root["klip_"+i]._x = 0;
}
_root["klip_"+anaklip._currentFrame]._x = 50;
}

Komut dizileri aşağıda açıklanacaktır. Önce konunun ana hatlarını anlayalım. Gördüğünüz gibi sadece kırmızı ile yazılmış alandaki frame numarasını değiştirmek ve diğer butonlara atamak sorunumuzu çözüyor.Kırmızı dizinin alt kısmı hep aynı kodları içermekte. Bu durumda bu alanı bir fonksiyon içine alıp butonlara sadece şu komutu atamak son derece pratik olacaktır:
on (release) {
anaklip.gotoAndStop(1);
kutulari_tasi();
}
Değiştirilmesi gereken tek yer kare numarası olacaktır. Şimdi ana timeline`da 1.kareyi seçip fonksiyonumuzu oluşturalım:
function kutulari_tasi() {
for (i=1; i<8; i++) {
_root["klip_"+i]._x = 0;
}
_root["klip_"+anaklip._currentFrame]._x = 50;
}
Önce fonksiyonlardaki kodları açıklayalım.
İlk dizinde kutulari_taşi adında bir fonksiyon kuruyoruz. prantez içinde bir parametre taşımıyor. 7 buton içeren film klibimiz olduğuna göre (klip_1,kli_2,..., klip_7) i değişkenini 1 değerinden başlatarak 7 değerine kadar rakam üreten bir döngü oluşturuyoruz.
Bir alt dizinde kutuları ilk hali olan x düzeyinde 0 numaraya çekiyoruz. _root["klip_"+i] Burada i değişkeni 1,2,3,4...7 şeklinde rakam üretmektedir. bunu "klip_" stringi ile birleştirdiğimizde klip_1, klip_2....klip_7 şeklinde 7 adet klibimizin örnek adı oluşturulmaktadır._root ile köşeli parantezler aracılığı ile birleştirildiğinde her döngü kurulduğunda ortaya çıkan _root.klip_1._x=0 dizini oluşmaktadır. Böylece tüm klipler x=0 düzlemine çekilmektedirler.
Bir alttaki dizinde tıklanan butonun 50 piksel açılması sağlanmaktadır. Butonlara şu komut atanacaktı
on (release) {
anaklip.gotoAndStop(1);
kutulari_tasi();
}
Gördüğünüz gibi butonlara tıklanınca 1 nolu buton anaklipte 1.kareye, 2 nolu buton 2. kareye .......7 nolu buton 7.kareye atlamakta sonra fonksiyon komutu icra edilmektedir. Bu durumda anaklipteki o anda bulunduğumuz kare numarası aynı zamanda ilerleyecek klip numarası ile aynı olacaktır.
_root["klip_"+anaklip._currentFrame]._x = 50;
Yukardaki komut ile klip1 stringine o anda anaklipte olduğumuz kare numarası eklenerek 50 piksel ilerleyecek klip adı ortaya çıkartılmaktadır. Örneğin bu 2 nolu buton için; _root["klip_"+2]._x = 50; yani _root.klip_2._x=50 olur. Ve 2 nolu klip 50 piksel sağa ilerler. Her butona basıldığında anaklipte gidilen kare numarası değiştiğinden ilerleyecek klipde değişecektir.
Artık butona atanan tek bir komutla filmimizi çalıştırmamız mümkün olacaktır.
on (release) {
anaklip.gotoAndStop(1);
kutulari_tasi();
}
Bir sonraki fonksiyonda ise aynı işlemi sadece:
on (release) {
kutulari_tasi();
}
komutuyla yapma imkanımız olacaktır.
Parametre alan fonksiyonlar
Fonksiyonlarda parametre kullanılması, bu parametreye farklı değerler vererek birden fazla yerde kullanmak amacını güder. Yukardaki örnekle devam edelim. kutulari_taşi fonksiyonuna hedef_kare parametresini ekleyelim. Bu durumda 1.karede oluşturulan fonksiyonun görünümü şöyle olacaktır:
function kutulari_tasi(hedef_kare) {
anaklip.gotoAndStop(hedef_kare);
for (i=1; i<8; i++) {
_root["klip_"+i]._x = 0;
}
_root["klip_"+anaklip._currentFrame]._x = 50;
}
Butonların herbirine şu komutu verelim:
on (release) {
kutulari_tasi(1);
}
Buradaki 1 rakamı hedef_kareye 1 değerini atar. Bu buton 2 için 2....., buton 7 için 7 olacaktır.
Bir üst kısımlaki fla dosyasını indirerek buton ve 1.kareye yukardaki komutları eklediğinizde sorunsuz çalışacağını göreceksiniz. Yine de hazır bir dosya istiyorsanız alttaki linkten indirebilirsiniz.
[Sadece pasaj sakinleri linkleri görebileceklerdir. lütfen kısa bir vaktinizi ayırın ve pasajımıza üye olun.. ]
Değer döndüren fonksiyonlar
Komutun yapısı şöyledir:
function fonksiyon_adi(parametre){
return.......;
}
Burada return dönen değerdir. Alttaki örneği inceleyelim. Burada bir site içinde geçirilen zamanın hesabı yapılmıştır. Bildiğiniz gibi bir swf dosyası açıldığında hemen görünmez bir kronometre çalışmaya başlar. Bu değere ulaşmak için getTimer() fonksiyonu kullanılır. Şayet bir swf dosyasında 1.kareye baslama_suresi=getTimer(); yazıp başka bir kareye trace(getTimer()-baslama zamanı) yazıp filmi oynattığınızda başlangıçtan itibaren geçen süre çıktı penceresinde gözlenecektir.




Metod olarak kullanılan fonksiyonlar
_root.klip.gotoAndPlay(2); komutunda klip 2 numaralı kareye atlayarak oynamaya devam eder. Bu bir metoddur. Aynı işlemi bazı durumlarda fonksiyonlarla da oluşturmak mümkündür. Şimdi alttaki örneği inceleyin. Her 3 butona peşpeşe basmaya devam edin. 1 nolu butona her basıldığında mavi klip klip 10 piksel büyüyecektir. 2 nolu butona her basışta yeşil klibin saydamlığı %20 artacaktır.3 nolu butonda ise heriki işlemde oluşacaktır.



[Sadece pasaj sakinleri linkleri görebileceklerdir. lütfen kısa bir vaktinizi ayırın ve pasajımıza üye olun.. ]



Burada örnek adı mavi,yesil ve kirmizi olan 3 klip örneği ve 3 adet buton mevcut.
Mavi film klibinin ilk karesine:
function buyult() {
_xscale += 10;
_yscale += 10;
}
Yesil film klibinin ilk karesine:
function saydamlastir() {
_alpha -= 20;
}

Kirmizi klibinin ilk karesine:
function buyult() {
_xscale += 10;
_yscale += 10;
}
function saydamlastir() {
_alpha -= 20;
}

komutlarını atıyoruz. Daha sonra aynı gotoAndPlay() dizinindeki gibi bir metod yazılımı ile bu fonksiyonları butonlara veriyoruz.

1 nolu buton:
on (press) {
_root.mavi.buyult();
}
2 nolu buton:
on (press) {
_root.yesil.saydamlastir();
}

3 nolu buton:
on (press) {
_root.kirmizi.buyult();
_root.kirmizi.saydamlastir();
}

Burada _root eklentisini fonksiyonlar film klipleri içinde olduğundan mutlaka kullanmak gereklidir.
Kaynak www.bilgipasaji.com/forum/flash-233/8459-flashta-fonksiyon-cesitleri-ve-kullanimi.html
Yorumunuzu Ekleyin

Yükleniyor...