Shared Objects ( Paylaşılmış Nesneler )


Bu bölümdeki bilgiler macromedia`nın web sayfası ve medyasoft`un hazırladığı Flash-MX Actionscript
kitabındaki bilgiler esas alınarak hazırlanmıştır.

Paylaşılmış nesneler klasik çerezlere benzeyen fakat çok daha etkili amaçlarla kullanılan nesnelerdir.

Verileri kullanıcının sabit diskine kopyalayarak bir veri deposu oluşmasını sağlarlar.Daha sonra bu veriler bir swf veya exe dosyası içinde kullanılırlar.

Bir paylaşılmış nesne oluşturabilmek için şu komutu vermeniz yeterli olur:

nesnemiz=SharedObject.getLocal("depo");

Kullanıcı bu komutu içeren bir swf ya da exe dosyasını ilk açtığında hemen sabit diskinde depo.sol adında bir dosya oluşturulur.Veriler buraya kaydedilir.Daha sonraki açışlarda ise depo.sol dosyasının içerdiği veriler doğrudan swf veya exe dosyasında nesnemiz değişkenine atanırlar.

Bu dosyayı kullanıcılar sabit diskinde şu dizinde bulabilirler:

Windows için:

Windows\Application Data\Macromedia\Flash Player\....

Mac için:

System Folder\Preferences\Macromedia\Flash Player\...

Bir kullanıcı paylaşılmış nesnelerle 2 şekilde karşılaşır:

1- Kendi bilgisayarında ilgili komutu içeren bir swf veya exe dosyasını açtığında:
Bu durumda paylaşılmış nesne alttaki dizine kaydedilir:

C:\WINDOWS\Application Data\Macromedia\Flash Player\localhost\Windows\Desktop\*.EXE\depo.sol

Yıldız işaretlerinin olduğu alanda exe dosyaya verdiğimiz ad yazılacaktır. Bu dizin Win98 SE içindir.Başka bir işletim sistemi kullanıyorsanız Başlat-->Bul-->Dosyalar ve Klasörler kısmına depo.sol yazdığınızda ilgili dizine ulaşabilirsiniz.

2- Bu komutu içeren bir URL adresindeki swf dosyasını açtığında:
Webde bu tür bir dosya açıldığında şu dizine kayıt yapılır.URL adresimizin şöyle olduğunu varsayalım:

http://www.macromedia.com/support/flash/ts/documents/local_so.htm

C:\WINDOWS\Application Data\Macromedia\Flash Player\macromedia.com\support\flash\ts\documents\local_so\local_so.swf\flashcookie.sol

Url adresi ile oluşturulan dosya adlarının aynı olduğunu görüyorsunuz.

Bu genel bilgilerden sonra alttaki örneği inceleyelim.İsim ve soyisim kısmındaki yazıları seçip gerekli bilgileri girin ve sonra browserdan yenile tuşuna basın. Paylaşılmış nesne oluşturulduğundan dosya sizin 2. kez sayfaya girdiğinizi anlayacaktır.

DOSYAYI İNDİR

Şimdi yukardaki bilgileri bir kontrol edelim.Bilgisayarınızda şu dizine bakın:(Win 98-SE için)

C:\WINDOWS\Application Data\Macromedia\Flash Player\flashdersleri.com\local_so.swf\flashcookie.sol

flashcookie.Sol dosyasını bir metin editörü ile açarsanız buradaki değişken ve değerleri göreceksiniz.

Şimdi önemli bir konuya gelelim.Siz web sayfasını açtıktan sonra bu tür bir kaydın yapılmasını engellemek veya yüklenecek bilgileri sınırlamak istiyorsunuz.

Bu durumda yapılacak işlem basit.Bu tür bir swf dosyası üzerine sağ klik yapın ve açılan menüden settings kısmını tıklayın.Player Settings kutusu açılacaktır. Panelin alt tarafında resimde de gördüğünüz gibi dosya ikonuna tıklayın.Burada never kısmını işaretlerseniz bu tür dosyaların kayıtlarını tamamen engellersiniz.

Bir deneme yapalım:

Yukardaki animasyona dönün sahnedeki mavi butona basın.Bilgisayara kayıtlı tüm veriler silinecektir.Şimdi butonun hemen altındaki boşluğa sağ klik yapın(uyarı=metin kutularının olduğu alana yaparsanız istediğiniz panel açılmaz) setting kısmından panele ulaşıp never kutusunu işaretleyin.Swf dosyasına dönün, ilgili alanlara isminizi yazın, daha sonra browserdan yenile tuşuna basın.İsminiz ve ziyaret sayınızın kaydedilmediğini göreceksiniz. Eğer sadece kısıtlama yapmayı planlıyorsanız setting panelindeki sürgü ile oynayın.

Veriler nasıl kaydedilir?

Paylaşılmış nesnelerde veriler data özelliğini kullanarak kaydedilir.Örneğin kullanici_adi instance name`ine sahip bir metin kutusundaki bilgileri kaydetmek için şu komutu vermelisiniz:

Nesnemiz.data.kullanici_adi=_root.kullanici_adi.text;

Tüm kayıtlar için bu data eklentisi şarttır. Flash ile sadece metin kutusundaki bilgiler değil diziler ve xml bilgileri de kaydedilebilir. Bunun için kullanılan kodlar:

Nesnemiz.data.savedArray=Dizinin_adi;

Nesnemiz.data.savedXML=xml_adi;

Son iki koddan daha bahsedelim.Bir diziyi veya metni kaydetmeye zorlamak için şu komutları yazabilirsiniz.

Nesnemiz.data.flush();

Alttaki komutta paylaşılmış nesneye kaydedilen veriyi siler:

Nesnemiz.data.isim = null;

Paylaşılmış nesnelerden bir çok alanda faydalanabilirsiniz. Buna en basit örnek , oyunların scorlarını kaydetme, günlük veya adres defteri hazırlama şeklinde verilebilir.

Örnek dosyanın hazırlanma tekniği:

Fla dosyasını indirip açtığınızda orada 2 input ve 1 tane de dinamik metin kutusu göreceksiniz.İnput kutuların instance name kısmına isim, soyisim, dinamik kutu içinse ziyaret yazılmıştır. Buton(instance name=resetbuton) bilgisayara kaydedilen verileri silmek amacı için kullanılacaktır.Komutlar tek bir karede toplanmıştır:

stop();
//Adınız kutusu otomatik seçili olur.
selection.setFocus("isim");

//Flashcookie isimli bir dosya oluşturuluyor.
Nesnemiz = SharedObject.getLocal("flashcookie" );

//Şayet kullanıcının ilk ziyareti değilse
//Önceden flashcookie dosyamıza kaydettiğimiz bu isimler metin alanına yazılır.
//Yine bu veriler aracılığı ile ziyaretçi adı ile sayısı dinamik kutuya yazdırılır.
//Hiç giriş yazılmamışsa metin kutuları uyarı yazısı eklenir.
if (Nesnemiz.data.isim != null && Nesnemiz.data.soyisim!= null) {
isim.text = Nesnemiz.data.isim;
soyisim.text = Nesnemiz.data.soyisim;
ziyaret.text = "Sayın "+Nesnemiz.data.isim+" "+Nesnemiz.data.soyisim+" burayı " + Nesnemiz.data.sayac + ". kez ziyaret ediyorsunuz."
}else {

isim.text = "<Adınızı yazınız>";
soyisim.text = "<Soyadınızı yazınız>";
ziyaret.text = "Bu ilk ziyaretiniz.";
Nesnemiz.data.sayac = 1;
}

//Sayaç değeri bir arttırılır.Bir dahaki girişte bu sayede doğru giriş değeri verilir.
Nesnemiz.data.sayac++;

//Şayet kullanıcı isimleri değiştirilirse kayıtlı veri değişimi sağlanır.
isim.onChanged = function() {
Nesnemiz.data.isim = isim.text;

}
soyisim.onChanged = function() {
Nesnemiz.data.soyisim = soyisim.text;

}

//Kaydedilen tüm veriler sıfırlanır
resetbuton.onRelease = function () {
Nesnemiz.data.isim = null;
Nesnemiz.data.soyisim = null;
Nesnemiz.data.sayac = 2;
isim.text = "<Adınızı yazınız>";
soyisim.text = "<Soyadınızı yazınız>";
ziyaret.text = "Bu ilk ziyaretiniz.";
}

//Alttaki kodlar input kutuya renk efekti vermek için yazılmıştır
isim.background=true;
isim.border=true;
isim.borderColor=0xFF0000;
isim.backgroundColor=0xFFC4C0
soyisim.background=true;
soyisim.border=true;
soyisim.borderColor=0xFF0000;
soyisim.backgroundColor=0xFFC4C0;

Filmi test edebilirsiniz.Yukardaki çalışma bir paylaşılmış nesne için verilen temel bilgi ve örneklerdir. Daha detaylı bilgi için yazımızın başında bahsettiğimiz Flash-Mx kitabı size büyük yarar sağlayacaktır.Kitabı değerlendirebilmek için flash programını yeterli derecede bilmeniz gereklidir.Google arama motorunda flash shared object şeklinde bir tarama yaptığınızda örnek dosya içeren birçok linke ulaşabilirsiniz.