Movie Clip Loader Sınıfını Kullanarak Önyükleyici Yapımı
Engin Gündoğdu Tarih: 28/07/2008 Yorum: 0 adet
Okunma : 756 Tutanlar: Bu yazıyı 0 kişi tuttu.
Bundan önceki derslerimde, yaptığımız çalışmaların tamamı için önyükleyiciler (preloader) yaptık. Çalışma içinde harici dosyalarımızı uygulamamıza dahil etmek istersek karşımıza yine bir bekleme süresi çıkacaktır. İnternet kullanıcıların kabusları olan bu bekleme sürelerini küçük animasyon ya da bilgilendirmelerle değerlendirebileceğimizi diğer yazılarımdan biliyorsunuz.
Bu yazımda yüklediğimiz harici dosyalara(swf,jpeg) ön yükleyici nasıl yapılır onu anlatacağım. Diğer yazılarımda olduğu gibi en basit şekilde uygulama üzerinden anlatmaya çalışacağım ve yaptığımız uygulamayı ekleyeceğim.
Flash programında bir uygulama gerçekleştirirken hepimizin özen gösterdiği konu dosya boyutudur. Dosya boyutumuzun yüksek olmaması içinde çalışmamızda kullandığımız resimlerimizi ve harici swf dosyalarımızı dışardan uygulamamıza dahil ederiz. Bu işlemleri çoğunlukla alışık olduğumuz loadMovie() ve loadMovieNum() fonksiyonları ile yapıyorduk.
Biz bu fonksiyonları kullanmak yerine Flash MX 2004 versiyonu ile gelen MovieClipLoader sınıfını kullanacağız.loadMovie metodu harici dosyalarımızı yüklemek için sadece bir komuttur.LoadMovie yükleme sırasında bize bir bilgi sunmaz ve dosyalarımızın yüklenip yüklenmediğini denetlemez.MovieCliploader sınıfı ise tam akisine yüklemelerimizin başından sonuna kadar bilgi alabileceğimiz bir çok olay denetleyicisini sunar.Kısa bilgilendirmeden sonra örnek bir çalışma üzerinden adım adım sınıfımızı anlatmaya başlayalım.
//Load_nesne adında MovieClipLoader sınıfına ait bir nesne örneği oluşturuyoruz.
Load_nesne = new MovieClipLoader ();
/*
Yükleme başlar başlamaz onLoadStart olay denetleyicisi tetiklenecektir. Olay denetleyicimiz, tek parametreye sahiptir.Harici dosyamızın yükleneceği movie clip sembolün instance name’ini yazıyoruz. Son olarak da trace komutu ile output paneline yükleme başladı yazdırıyoruz.
*/
Load_nesne.onLoadStart = function (yukle_mc) {
trace("Yükleme Başladı ")
};
/*
Harici dosyamız yüklenene kadar onLoadProgress olay denetleyicisi çağrılacaktır. Bu olay denetleyicimiz 3 parametreye sahiptir. İlk parametremiz harici dosyamızı yükleyeceğimiz movie clip sembolün referans adı. İkinci parametremiz ise dosyamızın o ana kadar yüklenen boyutunu döndürür. Üçüncü parametremizde harici dosyamızın toplam boyutunu taşır.
*/
Load_nesne.onLoadProgress = function (yukle_mc, yuklenen, toplam) {
/*
Alta ki kodlar size diğer yazılarımdan tanıdık gelecektir. Yine de kısa bir şekilde bahsedelim. yuzde değişkenine yuklenen byte’ı toplam byte bölüp 100 ile çarpıp çıkan sonucu Math sınıfının floor metodu ile tamsayıya çevirip atıyoruz. yuzde değişkenini yuzdetxt isimli textimize yazdırıyoruz, barmc referans isimli movie clip sembolümüzün xscale özeliğini yuzde değişkenimize bağlıyoruz. Son olarak da trace komutu ile output paneline dosyalarımız yükleniyor yazdırıyoruz.
*/
var yuzde= Math.floor ((yuklenen / toplam) * 100);
yuzde_txt.text = "Yüklenen : " + yuzde+ " %";
bar_mc._xscale=yuzde;
trace("Dosyalarımız yükleniyor ")
};
/*
MovieClipLoader sıfımızın medotlarını taşıyan load_nesne örneğimizin onLoadComplete Olay denetleyicisi ise yükleme tamamlandıktan sonra tetiklenir. onLoadComplete olay denetleyicisinin 2 parametresi vardır. Birinci parametreye dosyamızın yükleneceği movie clip sembolün referans ismini yazıyoruz. İkinci parametresine ise flash 8 versiyonu ile gelen durum kodunu taşır. Bu durum kodları sayesinde dosyanızın bulunmaması (404) veya erişim izinlerinden kaynaklanan (403) sorunlar nedeniyle uygulamamızda çıkan aksaklıkları düzenleyebiliriz. Parametrelerimizi açıkladıktan sonra bu satırda yuzdetxt isimli metin kutumuza yükleme tamamlandı yazdırıyoruz. barmc ve yuzde_txt’mizi visible özelliklerini false atayıp görünmez yapıyoruz.
*/
Load_nesne.onLoadComplete = function (yukle_mc,Durumkodu) {
bar_mc._visible=false;
yuzde_txt._visible=false,
trace("yükleme tamamlandı ")
};
/*
Yükleme tamamlandığında yüklediğimiz dosyamızın ilk frame’i oynadığı anda onLoadInit olay denetleyicisi tetiklenir. Bir tane parametresi vardır oda yükleme yapacağımız movie clibimizin referans ismidir. Script akışınıza göre yapmak isteğiniz uygulamaları bu olay denetleyicisinin altına yazabilirsiniz. Biz bilgi edinmek için yine trace komutu ile "ilk frame oynatıldı" yazısını yazdıralım.
*/
Load_nesne.onLoadInit = function (yukle_mc) {
trace("ilk frame oynatıldı ")
};
/*
Son olarakta onLoadError olay dentleyicimiz, harici dosyamızın belirtilen adreste bulunmaması veya yükleme sırasında yaşanan ani kesintilerde tetiklenir. Olay denetleyicimiz 3 parametreye sahiptir. Tahmin edeceğiniz gibi birinci parametresi movie clibimizin ismini, ikinci parametresi ise hata türü ile ilgili bir sitring ifade taşır. Bu ifadeler ;
"URLNotFound" :Çalışmamıza dahil etmek istediğimiz dosyamızın bulunmaması durumunda hata parameteremiz bu string ifadeyi döndürecektir ve onLoadStart olay
denetleyicisi hiçbir zaman çağrılmayacaktır
.
"LoadNeverCompleted":Yükleme esnasında sunucunun kapanması veya internet bağlantımızın kesilmesi durumunda hata parametremiz bu string ifadeyi döndürecektir.
onLoadStart olay denetleyicisi tetiklenecek fakat yükleme tamamlanamayacağı için
onLoadComplete çağrılmayacaktır.Üçüncü parametresi de yine bahsettiğimiz durum kodunu taşır.
Kod bloğumuzda dönecek olursak 2. parametremizin döndüreceği değere göre 2 tane şart koşuyoruz ve bu şartlardan herhangi biri gerçekleşirse sahnedeki textimize ve output panelimize hata türlerini yazdırıyoruz.
*/
Load_nesne.onLoadError = function (yukle_mc,hata,durumkodu) {
// Eğer dosya bulunamazsa
if (hata == "URLNotFound") {
yuzde_txt.text = "Dosya bulunamadı!";
trace("dosya bulunamadı")
// Yükleme esnasında bir hata oluşursa
} else if (hata == "LoadNeverCompleted") {
yuzde_txt.text = "İletişim hatası!";
trace("iletisim hatası ")
}
};/*
Bu kısım sınıfımızla ilgili olmayıp, harici dosyamızın yükleneceği movie clip sembolü dinamik olarak oluşturuyoruz. Aşağıdaki kodumuzdan da anlaşılacağı gibi oluşturduğumuz movie clibimizin referans ismini yukle_mc atıyoruz. Oluşturduğumuz sembolü sahnemizde en son derinlik seviyesine yüklüyoruz.
*/
_root.createEmptyMovieClip ("yukle_mc", _root.getNextHighestDepth ());
/*
Evet son olarak artık MovieClipLoader sınıfının özelliklerini taşıyan nesnemize loadClip metodu ile harici dosyamızı yüklettiriyoruz. İlk parametreye yüklemek istediğimiz dosyamızın ismini ve uzantısını, ikinci parametremize oluşturduğumuz movie clip sembolümüzün adını yazıyoruz.
*/
Load_nesne.loadClip ("deneme.swf", "yukle_mc");
MoviClipLoader sınıfını örnek üzerinden adım adım anlatmaya çalıştım. Açıklamaları /* operatörü ile başlayıp */ operatörüyle bitirdiğim için action script yorumlayıcısı tarafından dikkate alınmayacaktır. Açıklama satırlarını da flash programınıza dahil edebilirsiniz. Son olarak özetlemek gerekirse:
Yaptığımız uygulamaların herhangi bir yerinde dışardan çağıracağımız dosyalara MovieClipLoader sınıfını kullanarak önyükleyici (preloader) ekledik. Sınıfımıza ait bir nesne örneğini oluşturduk. Sınıfımızın olay denetleyicilerini oluşturduğumuz nesneye bağlı olarak sırasıyla kullandık. Uygulamanızı iki kere Ctrl+Enter tuş kombinasyonuna basarak test edebilirsiniz. Output panelindeki yazıların sırasına dikkat ederseniz, olay denetleyicilerimizin sırasını ve ne işe yaradıklarını daha iyi kavrayabilirsiniz.
Bu sınıfı yeni öğrendiyseniz, loadMovie komutu yerine birçok özelliğe sahip olan bu sınıfı kullanmanızı tavsiye ederim.
Diğer yazılarımda görüşmek üzere…
İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.
Makale
İlişkili makale bulunamadı.
Haber
İlişkili haber bulunamadı.
Etkinlikler
Toplantı
Kahraman ve need4code.com Projesi Connect Toplantısı
Kahraman ve need4code.com Projesi Connect Toplantısı
Selam arkadaslar,
Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori:
Toplantı
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız








