asfunction


Flash`ın asfunction protokolu fazla bilinen bir yöntem değildir. Ama bazı çalışmalarda çok faydalı olabilir. Bu protokol ile statik bir metinden frame üzerine yazılmış bir fonksiyona ulaşılarak buradaki kod grubu çalıştırılabilir. Ya da dinamik metin kutusundan HTML etiketleri kullanılarak yine frame üzerindeki fonksiyon grubu çalıştırılabilir.Metin kutusunu manuel olarak oluşturabileceğiniz gibi dinamik yöntemle de yaratabilirsiniz. Prototol yazımı alttaki gibidir:

asfunction:fonksiyon_adı,parametre

şeklindedir. Buradaki fonkisyon adı anasahnedeki ulaşmak istediğimiz fonksiyona verilen isimdir.şayet bu fonksiyona parametre göndermek isterseniz fonksiyon adından sonra bir virgül koyup sonrasına istediğiniz parametreyi ekleyin.

Ancak tek bir parametre gönderebilirsiniz. Virgülden sonra yazacağınız herşey tek bir parametre kabul edilir ve daima string olarak algılanır.Yani bir numerik değer gönderemezsiniz.örneğin virgülden sonra ali123,1/4=8a gibi bir değer yazdığınızda flash bunu basit tek bir string olarak "ali123,1/4=8a" algılar.

Altta basitten daha komplike çalışmaya doğru örnekleme yapılmıştır.

Yukardaki çalışmada link yazısına tıkladığınızda blank bir sayfa açılacaktır. Link yazısı bir buton olarak hazırlanmamıştır. Basitçe klavye ile yazılmış bir metinden ibarettir.

1-Flash programını açın ve sahneye istediğiniz boyutta bir statik metin yazın.Bu metni tek tıklama ile seçip properties paneline bakın:

2- Orta alt kısımdaki URL alanına asfunction:fonksiyonumuz yazın.Dikkat ederseniz hiç parametre kullanılmadı. Bir sonraki örnekte fonksiyona parametre göndereceğiz.

3- Şimdi sahneye dönüp timeline üzerindeki tek kareye çalıştırmak istediğimiz fonksiyonu yazalım:

function fonksiyonumuz(){
getURL("http://www.google.com","_blank")
}

Filmi test ettiğinizde metin adeta bir butonmuş gibi fonksiyon görecek ve üzerine tıklandığında google sayfasını açacaktır.

Şimdi 2.örneğimize geçelim.

2.örneğimizde metin üzerine tıklandığında parametre olarak gönderilen değerler dinamik metin kutusunda gösterilecektir.

1- Sahneye metninizi (listele) yazınız.Ve yanına bir dinamik metin kutusu çizin. Metin kutusuna properties panelinden kutu adını verin.

2- Metni tek tıklama ile seçip properties paneline baın:

URL alanına : asfunction:fonksiyonumuz,1.cümle,2.cümle,3.cümle yazınız. Burada fonksiyonumuz az sonra yazacağımız fonksiyon adıdır.Virgülden sonra kısım gönderilecek parametredir.Yani gönderilecek parametre 1.cümle,2.cümle,3.cümle şeklinde göreceğimiz tek bir string olacaktır.

3- Anasahneye dönüp 1.kareye şu kodları atayın:

kutu.multiline=true;
kutu.autoSize=true;
kutu.text="Soldaki butona basınız"


function fonksiyonumuz(parametre){
dizi = new Array;
dizi = parametre.split(",");
kutu.text="";
for (i=0; i< dizi.length; ++i){
trace("Eleman " + i + " = " + dizi[i]);
kutu.text+=dizi[i]+newline;
}
}

// Önce dinamik metin kutusu multiline ve otomatik genişleme özelliğine sahip oluyor ve içine soldaki butona basınız şeklinde bir metin ekleniyor. Daha sonra properties panelinde kullandığımız fonksiyon oluşturuluyor.Bu fonksiyonda adı parametre olan bir parametre kullanılıyor. Önce dizi isminde yeni bir dizi oluştururuyor. Ve bu diziye parametre olarak gönderilen string atanıyor. Gelen string 1.cümle,2.cümle,3.cümle şeklinde idi.bildiğiniz gibi split komutu bu stringi atanan karakterler arasından bölerek bir dizinin elemanlarını oluşturur. Burada kullanılan karakter virgüldür.String her virgülden sonra bölünerek bir dizinin elemanını oluşturur.Sonuç:

eleman1 = 1.cümle
eleman2= 2.cümle
eleman3= 3.cümle olacaktır.

sonraki dizinde metin kutusuna yazılan yazı temizlenir ve bir for döngüsü oluşturulur. Bu döngü ile split komutu ile elde edilen değerler metin kutusuna yazdırılır.Burada kullanılan newline komutu bir alt satıra geçişi sağlar ve dizi elemenları alt alta yazılır.

Şimdi 3.örneğimize geçelim.

Bu örneğimizde dinamik olarak oluşturulan metin kutusuna asfunction protokolünü kullanarak buton özelliğini gösteren metin dizileri yazdırılacak ve bu metinlere sahnedeki bir klibi yönlendirme ve bir adrese bağlanma fonksiyonu kazandırılacaktır.

1- 1.layerda bir tween işlemi oluşturun .Çalışmamızda 100 frame`lik bir animasyon oluşturuldu.

2- Üste yeni bir layer ekleyin ve 1.kareye şu komutları yazın:

metinKutusu=function(komut){
if(komut=="durdur"){
_root.stop();
} else if (komut=="oynat") {
_root.play();
} else if (komut=="anasayfa") {
getURL("http://www.flashdersleri.com","_blank")
}
}

_root.createTextField("dinamik_kutu",1,240,110,50,50);
mesaj="<a href='asfunction:metinKutusu,durdur'><b>Durdur</b></a><br><br><a href='asfunction:metinKutusu,oynat'><b>Oynat</b></a><br><br><a href='asfunction:metinKutusu,anasayfa'><b>Anasayfa</b></a><br>";

dinamik_kutu.html=true;
dinamik_kutu.multiline=true;
dinamik_kutu.autoSize=true;
dinamik_kutu.htmlText=mesaj;

3- Filmi test edebilirsiniz.

Kodları açıklarsak:

metinKutusu=function(komut){
if(komut=="durdur"){
_root.stop();
} else if (komut=="oynat") {
_root.play();
} else if (komut=="anasayfa") {
getURL("http://www.flashdersleri.com","_blank")
}
}

// Yukarıda önce metinKutusu isimli fonksiyonumuzu oluşturuyoruz.Komut isimli parametreye gelen değer durudr olursa animasyon stoplanacak,oynat olursa animasyon başlayacak ve anasayfa olursa bir url adresine bağlanacaktır.

_root.createTextField("dinamik_kutu",1,240,110,50,50);
mesaj="<a href='asfunction:metinKutusu,durdur'><b>Durdur</b></a><br><br><a href='asfunction:metinKutusu,oynat'><b>Oynat</b></a><br><br><a href='asfunction:metinKutusu,anasayfa'><b>Anasayfa</b></a><br>";

dinamik_kutu.html=true;
dinamik_kutu.multiline=true;
dinamik_kutu.autoSize=true;
dinamik_kutu.htmlText=mesaj;

//Yukarıda dinamik yöntemle bir metin kutusu oluşturuluyor.Parantez içinde sıra ile yazılanlar,metin kutusu adı, derinliği, x poziyonu,y pozisyonu,en ve yüksekliği şeklinde sıralanır. Daha sonra mesaj adında bir değişken oluşturulup burada a tagı aracılığı ile 3 adet link oluşturulur.Ve asfunction protokolü hazırlanarak oluşturulandurdur,oynat ve anasayfa metinlerine tıklandığında metinkutusu isimli fonksiyonumuza gönderilecek parametreler ayarlanır. Bu parametreler metne tıklandığında fonksiyon içine alınarak yapılacak işlemi çalıştırır.kullanılan br tagı bir alt satıra geçmek için yazılmıştır.

Daha sonraki kodlarla metin kutusu html özelliği açılıp,multiline ve otomatik genişleme fonksiyonunu kazanır. Son komutlada mesaj değişkeninin tüm içeriği metin kutusuna aktarılır.

DOSYALARI İNDİR