Flash MX2004 versiyonu ile gelen bu sınıf, loadMovie
ve loadMovieNum komutunun yerini alması için planlanmış ve bu
komurtlardan çok daha geniş özellikler sunan bir sınıftır.loadMovie()
bir swf ve standart formatta jpg dosyasını sahneye yükler.Yüklenecek
dosyanın yerinde olup olmadığı, hangi boyutta olduğu,yüklemenin
başladığı veya bittiği ile ilgilenmez ve bu özellikleri denetleyemez.MovieClipLoader
sınıfı ise yüklenecek dosyanın başından sonuna kadar yüklenmesini
denetler.Dosyanın yüklenecek dizinde bulunup bulunmadığı,yüklemenin
başladığı, hangi oranda yüklendiği(preloader oluşturulabilir),yüklemenin
bittiği ve ilk karenin oynamaya başladığı ana kadar en detaylı
şekilde değerlendirme yapabilir.
Bu kadar güzel ve detaylı komutun olumsuz yanı
olabilir mi? Maalesef 2004 versiyonunda sıkça gördüğümüz bug lardan
bu sınıfta nasibini almıştır.Versiyon 7.0 ve
7.0.1 de aşağıdaki örneği yapmanız mümkün olmayacaktır. Sahneye
birden fazla klip yerleştirildiğinde sorun çıkmaktadır.Bu nedenle
bu versiyonlarda bir bar klip kullanma yerine sadece bir metin
kutusunda yükleme yüzdesini göstermekle yetinmelisiniz. Veya
bizim çalışmada uyguladığımız gibi versiyon 7.0.2 yi kullanmalısınız.
Uyarı: MovieClipLoader sınıfı ile yapılan yüklemelere ait preloading işlemi test modunda çalışmaz. Bunun nedeni flash`ın yüklenen yüzdeyi harddiske yazılan veriyi değerlendirerek oluşturmasıdır. Lokal şartlarda veri yazılması sözkonusu olmadığından uyguladığınız preloading işlemi çalışmayacaktır. Deneme yapmak için servera yüklemekten başka çare yoktur. Bu bilgileri bana veren Okan Ulaş arkadaşıma teşekkür ederim.
Detaylara geçmeden önce alttaki butona basarak
çalışmayı inceleyebilirsiniz:
Çalışmayı oluşturmak oldukça basittir. Önce
sahneye boş bir klip yerleştirin. Bunu manuel olarak yapabileceğiniz
gibi doğrudan kodlarla da oluşturabilirsiniz.Bunu:
_root.createEmptyMovieClip("bosklip",1);
komutu ile sağlayabilirsiniz.
Klibi manuel hazırladı iseniz sahnede tıklayarak
seçip bosklip instance name`ini atayınız. Üste
yeni bir layer ekleyin ve buraya dinamik metin kutusu yerleştirin
instance name olarak kutu adını verin. En
üste 3 layerı ekleyin ve bar görüntüsü için sahneye 8 piksel
yüksekliğinde ve 130 piksel genişliğinde (bu değerleri istediğinize
göre değiştirebilirsiniz) bir dikdörtgen çizin. Dikdörtgenin
dış çizgilerini tıklayarak seçin.(Shift tuşuna
basılı tutarak tıklama yaparsanız birden fazla kenarı aynı anda
seçme şansına sahip olabilirsiniz)
Ana
menüden Edit-->Cut alanına tıklayıp dış
çizgileri kesin ,en üst kısma 4.layerı yerleştirin ve yine
ana menüden Edit-->Paste
in Place şeçeneğini tıklayın kesilen dış kenar aynı
alana yerleşecek ama bir üst layerda olacaktır.Şimdi bu dış kenarlar
hala seçili iken F8 tuşuna basın ve çizgileri film klibine çevirin.İnstance
name kısmına barcerceve yazın. Bir alt layerdaki
dikdörtgenin iç kısmını tıklayarak seçin ve F8 tuşuna basın.Açılan
panelden film klibi seçeneğini işaretleyin ve filmin
merkesini sol dış kenara alın:
Bunun için yukarıdaki grafide gördüğünüz gibi
sol ortadaki kutucuğu işaretleyin.Bunun amacı merkez nokta solda
kalacağı için bar yükleme arttıkça sağa doğru ilerleyecektir.Bunu
yapmaz merkez noktayı orta kısımda bırakırsanız bar hem sağa
hem de sola doğru genişleme gösterir.Bu klibe de bar instance
name`ini atayınız.
Şu an resmin yükleneceği boşklibimiz,bar ve
dinamik metin kutumuz hazır.Artık kodlara geçebiliriz.Bu arada
yüklenecek swf dosyamızın adı resim1.swf şeklinde
hazırlanmıştır.İsterseniz bir jpg dosyası da yükleyebilirsiniz.
En üste kodlar için bir layer ekleyin ve buraya alttaki kodları
yazın:
var klipLoader = new MovieClipLoader();
klipLoader.onLoadStart = function (bosklip) {
kutu.text="veriler yükleniyor"
}
Tüm çalışma bu kadar.Şimdi kodların
detayına geçebiliriz:
var klipLoader = new MovieClipLoader(); Önce
bir yeni bir movieClipLoader nesnesi oluşturulur.
klipLoader.onLoadStart
= function (bosklip) {
kutu.text="veriler yükleniyor"
}
İlk yazılacak kod grubu onLoadStart komutudur.Buraya yüklemenin ilk başladığı
anda ne yapılması gerektiğini bildiririz.Biz verilerin yüklendiğine dair bir
uyarı yazısı çıkmasını istedik.Bu alan çok kısa süreli gözlendiğinden yüklenme
hızı fazla ise bu metnin görünmesi atlanabilir.
klipLoader.onLoadProgress
= function (bosklip, yuklenen, total) {
yuzde=Math.floor( yuklenen/total*100);
bar._xscale=yuzde;
kutu.text="% "+yuzde+" yükleme yapıldı"
} Eğer yükleme bilgisi vermek istiyorsanız ikinci
sıradaki kod grubu onLoadProgress() tir.Burada
3 parametre görüyorsunuz. İlki takip edilecek hedef
klip(bizde
yükleme yapılacak olan bosklip`tir) ,diğeri yüklenen
verilerin
sonuncusu ise toplam yüklenecek verilerin byte değeridir. Daha
sonra klasik preloading kodları yazılır.
klipLoader.onLoadComplete
= function (bosklip){
kutu._visible=false;
bar._visible=false;
barcervece._visible=false;
} 3.sıradaki kodumuz onLoadComplete`dir.Yükleme
tamamlandığı anda yapılması gerekenler sıralanır.Çalışmamızda swf dosyası yüklendiği
anda metin kutusunu bar ve barcerceve adlı film klibinin görülmemesini planladık.
klipLoader.onLoadInit =
function (bosklip) {
bosklip._width = 170;
bosklip._height = 170;
} 4.sıradaki kod grubumuz onLoadInit() komutudur. Burada klibin
yüklenmesi bitip ilk kare oynamaya başladığı andaki yapılması istenenler yazılır.Biz
bosklip`in en ve boy oranını 170 piksele ayarladık.
klipLoader.onLoadError
= function (bosklip, hata) {
if(hata=="URLNotFound"){
kutu.text="Dosya bulunamadı";
}else if(hata=="LoadNeverCompleted"){
kutu.text="Bağlantı kesildi";
}
}
5.sırada onLoadError komutu var.Burada hata adında bir parametre
mevcut.Bir klibin yüklenmemesi için 2 neden vardır.İlki yüklenmesini istediğimiz
dizinde bu klibin bulunmamasıdır.Şayet filmi şuradan indir dediğimizde flash
orada filmi bulamazsa URLNotFound hatasını verir.
İkinci yüklenememe nedeni ise internet bağlantısının kesilmesidir.Flash ilgili
dizinde filmi bulur yüklemeye başlar.Bu arada aniden internet bağlantısı kesilirse
flash LoadNeverCompleted hatasını
verir. Bu bilgilere dayanarak hata parametresine bu değerleri atayarak bir if
sorgusu yapılır.Bir sorun olduğunda buna ait bilgiler dinamik metin kutusunda
bildirilir.Bu özellikleri sizde deneyerek görebilirsiniz.
klipLoader.loadClip("resim1.swf","_root.bosklip"); Son
komutumuz loadClip komutudur. Buraya yüklenecek klibin adı ve
yüklenme alanı yazılır.
----------------------------------------
Dinamik yöntemle bu çalışmayı hazırlamak isterseniz
:
Flash programını açıp 1.kareye şu kodları yazmanız
yeterli olacaktır:
_root.createEmptyMovieClip("bosklip",0);
_root.createTextField("kutu",1,200,200,130,15);
var klipLoader = new MovieClipLoader();
klipLoader.onLoadStart = function (bosklip) {
kutu.text="veriler yükleniyor"
}