Birbirinden Bağımsız Swf Dosyalarının Haberleşmesi


Alttaki 3 swf dosyası birbirinden tamamen bağımsızdır. Çalışmada kolaylık olması için aynı sayfaya alındı. Siz tüm swf dosyasını ayrı ayrı bir HTML sayafasına alıp kullanabilirsiniz.Ayrı HTML sayfasına gömülmüş swf dosyalarında bağlantı kurulabilmesi için herüç sayfanın da açık olması gereklidir. Önce bir sayfayı açıp mesajı göndermek sonra diğer sayfayı açıp mesajı alma şansımız yoktur.

Örnek macromedia`nın sayfasından alınmış ve modifiye edilmiştir. Bu örneği bana hatırlatan fuad_all arkadaşıma teşekkür ederim. Aşağıdaki çalışmada 1.swf dosyasına yazdığımız verileri butona tıklayarak 2.swf dosyasına aktarıyoruz. Bu aktarma gerçekleştiğinde 2. dosyadan 3. ye yine bir mesaj gönderiliyor ve bağlantının kurulduğu uyarısı çıkıyor.

Gönderilecek mesajda Türkçe karakter ve birden fazla satır kullanabilisiniz. 2. dosyada tüm mesajın gözükmesi için scroll kullanılmıştır.

DOSYALARI İNDİR

Uygulama:

Önce mesajın yazıldığı 1. swf dosyasını oluşturalım:

1- Sahneye bir input metin kutusu (instance name giden_mesaj ) ve verileri göndermek için bir buton (instance name butonumuz) yerleştirin .

2- 1. kareye şu komutları verin.

//Bir buton olayı başlatılıyor
butonumuz.onRelease = function() {
//Önce bir localConnection oluşturuluyor
//Ve bir değişkene atanıyor

baglanti_gonder = new LocalConnection();
//Metin kutusunun içeriği send() metoduyla gönderiliyor
baglanti_gonder.send("baglanti_adi", "yazdir", giden_mesaj.text);
//Mesaj gönderildikten sonra bağlantı siliniyor
delete baglanti_gonder;
};

Buradaki baglanti_adi ve yazdir fonksiyonunu 2. swf dosyasında kullanacağız.

Mesajın alındığı 2. swf dosyasını oluşturalım:

1- Sahneye dinamik bir metin kutusu (instance name gelen_mesaj) ve 2 adet scroll için buton yerleştirin .

2- 1.kareye şu komutları verelim:

//Yeni bir localConnection oluşturuluyor
//ve bir değişkene atanıyor

baglanti_al = new LocalConnection();
//Bir bağlantı oluştuğunda işlemi başlatacak bir fonksiyon tanımlanıyor
baglanti_al.yazdir = function (metin) {
//Metin kutusunun içeriği ayarlanıyor
//Diğer klipten gönderilen mesajı alan parametreye atanıyor

gelen_mesaj.text = metin;
}
//Bağlantı yapılıyor
baglanti_al.connect("baglanti_adi");

//2 swf dosyasında haberleşme kuruldu
//Şimdi 3 swf dosyasına mesaj gönderilecek

this.onEnterFrame=function(){
if(gelen_mesaj.text.length>0){
baglanti_gonder2 = new LocalConnection();
metin2="Bağlantı Kuruldu"
baglanti_gonder2.send("baglanti_adi2", "yazdir2", metin2);
delete baglanti_gonder2;
}
}

Butonlara şu komutu verelim:

on (release) {
gelen_mesaj.scroll = gelen_mesaj.scroll + 1;
}

ve

on (release) {
gelen_mesaj.scroll = gelen_mesaj.scroll -1;
}

 

Kodların 2. bölümü sadece 3. swf dosyası içindir.Bu kodlar silindiğinde yine ilk 2 swf dosyası aralarında haberleşebilir. 3. swf dosyasına mesaj göndermek için önce 2. dosyanın mesajı alıp almadığı değerlendiriliyor. Bu denetimin devamlı yapılabilmesi için olay enterFrame şeklinde sunuluyor. Şayet 2. swf dosyasındaki metin kutusuna herhangibir mesaj eklenmişse buradaki stringin değeri sıfırın üstünde olacağından yine ilk swf dosyasında gördüğümüz yöntemlerle 3. swf dosyasına mesaj gidecektir.

Yalnız buradaki mesajı biz belirleyerek metin2 değişkenine atıyoruz. İlk swf dosyasında ise farklı olarak metin kutusundaki değerler gönderilmişti.

Uyarı mesajı verecek 3. swf dosyasını oluşturalım:

1- Yine sahneye dinamik bir metin kutusu yerleştirin. İnstance name son_gelen olsun. Yanıp sönme efekti için sahneye ilk karesinde stop(), son karesinde gotoAndPlay(2); yazan basit bir animasyon ekleyelim. Şayet bağlantı kurulmuşsa bu klip yanıp sönme efekti sağlayacaktır. Klibin instance name kısmına klip yazalım

2- 1.kareye şu komutları atayın:

baglanti_al2 = new LocalConnection();
baglanti_al2.yazdir2 = function (metin2) {
son_mesaj.text = metin2;
}
baglanti_al2.connect("baglanti_adi2");

klip.onEnterFrame=function(){
if(son_mesaj.text.length>0){
this.gotoAndPlay(2);
delete this.onEnterFrame;
}
}

Komutların 2. kısmı film klibinin başlatmak için kullanılıyor. Yine yukarda anlatıldığı gibi mesaj kutusu boş değilse film klibi 2. kareye geçip efekti başlatacaktır.

Artık tüm dosyalar haberleşebilir. Bu yöntemi farklı çalışmalarda veri gönderme amaçlı kullanabilirsiniz.