SWFAddress ile Dinamik Tema Sistemi

Tarih: Haziran 12th, 2009 | Yazar: | Kategori: Action Script | Etiketler: , , , , , , , , | Yorum yok »

Merhaba arkadaşlar. Bugün sizlere SWFAdress’ in hangi alanlarda kullanılabileceğine örnek olan bir yazı yazacağım. Hatta ve hatta bu sistemi herkese öneriyorum. Çünkü bütün sistemi parçalara bölerek boyuttan da büyük tasarruf edeceğiz. Tek seferde sadece gerekli dosyalar inecek ve hızlıca gösterime açılacak. Ondan sonra yine küçük boyuttaki dosyalar tek tek “gerekli” oldukları yerlerde oyuna dahil olacaklar…

Bu sistemi şu anda geliştirdiğim video sistemimizde de kullanıyorum. Biraz değişik bir şekilde fakat yinede temelde bu mantık var. Zaten video sistemimiz yayına girince herkese orada kullandığım fonksiyonları anlatacağım. Sanıyorum herkese çok çok faydalı olacak…

Arkadaşlar öncelikle tam olarak ne yapacağımızı bilelim. Index isimli bir fla dosyası yaratalım. Bu dosyada gerekli kodlarımız yer alacak. Şöyle düşünelim; diyelim ki bir kutu var. Bu kutunun içerisinde de bir sürü oyuncak. Kişi ilk önce kutuyu açacak. İşte index.swf burada bizim kutumuz. Ben tasarımını şöyle birşey yaptım;

SWFAddress ile Tema Sistemi

Gördüğünüz gibi orta kısıma diğer sayfalar dahil olacak. Şimdi orta kısıma boyutları 400×200 olan swfler dahil edeceğiz. Diyelim ki ilk swf mizin adı; ben.swf diğeri ise liste.swf. Ben.swf içerisinde kendimi tanıttım. Liste.swf de ise referanslarım var. Bunları parça parça dahil ederek boyutları minimuma indireceğiz…

Şimdi kodlarımızı şu olacak;

import swf.*;

SWFAddress.addEventListener(SWFAddressEvent.CHANGE, addressChange)
function addressChange(e:Event){
var deger:String = SWFAddress.getValue();

switch(deger) {
case "ben":
al("ben.swf");
break;
case "liste":
al("liste.swf");
break;
}
}

function al(adres:String) {
if(numChildren>2) { removeChildAt(2); }
var alswf:URLRequest = new URLRequest(adres);
var yukleyici:Loader = new Loader();
yukleyici.load(alswf);
yukleyici.x = 74;
yukleyici.y = 121;
addChildAt(yukleyici,2);
}

Burada gördüğünüz gibi önce SwfAddress klasörlerimizi içeriye davet ettik. Sonra her adres değişikliğinde tetiklenecek bir fonksiyon tanımladık. Ardından adres satırından gerekli değeri çektik. Bu değeri bir switch döngüsüne soktuk. Burada eğer ki “ben” yazarsa ben.swf yi dahil ettirdik. Fakat “liste” yazarsa liste.swf geldi. Dikkat ettiseniz al isimli bir fonksiyon daha var. Fazladan kod yazmak yerine tek bir fonksiyon yarattık burada…

Arkadaşlar normalde her değişimde ben.swf veya liste.swf üst üste binecektir. Fakat bize birinin gidip birinin gelmesi gerekiyor. Bu yüzden sahneye eklerken addChildAt methodunu kullandık. Normal bildiğimiz addChild fonksiyonunun yanına At geldi. Arkadaşlar bu At sayesinde bütün sahneyi bir dizi haline getiriyoruz. Yani üst üste bindiklerinde hangisinin hangi boyutta olacağını ayarladık. Sahnemizde site ismi ve orta kısımdaki kenarlıklar mevcut. Site ismi 0. boyutta ise kenarlıklar 1. boyutta demek. İşte yeni gelen dosyayı bunlardan ayrı olarak 2. boyuta atıyoruz. Şimdi üst satırlara tekrar geçelim;

function al satırının hemen altında bir if sorgusu var. Burada diyoruz ki; sahnedeki elemanlar 2 den fazla ise 2. boyuttaki elemanı sil. Bu ne demek? Eğer ki sahnede önceden yüklenmiş bir dosya varsa sil, ondan sonra tekrar yükle…

İşte en basit hali ile tema sistemi budur. Unutmadan arkadaşlar eğer ki “Böyle bir şey sitemizde bulunmuyor!” yazısı yani 404 hatası vermek isterseniz;

switch(deger) {
default:
al("bulunamadi.swf");
break;
case "ben":
al("ben.swf");
break;
case "liste":
al("liste.swf");
break;
}

yapıyoruz. Yani switch döngüsü başına default ( varsayılan ) ekleyerek dizi de bulunmadığı taktirde “bulunamadi.swf” yi içeriye alıyoruz…

Son olarak bu çıktı ortaya;

Şimdilik bu kadar arkadaşlar. Yakın zamanda içeriye dahil olan swf nin yükseklikleri kenarlıklardan fazla ise ne yapmamız gerektiğini işleyeceğiz…

Herkese iyi günler, iyi çalışmalar…5124280




Benzer Yazılar;

coded by nessus

Ahkam Kesme Aparatı

  • *