Gerçek zamanlı bar oluşturma prensipleri aynıdır. Yüklenen karelerin yüklenecek karelere bölümünün 100 ile çarpılma esasına dayanır. Önce alttaki butona tıklayarak örneğe bir göz atın.

Uygulamanın önizlemesi içn tıklayınız

Uygulama :

1- Üç katman oluşturun. Üstteki katmana aksiyon, altındaki yüzde ve en alttakine bargrafik adını verin.

2- Yüzde katmanın ilk karesine yükleniyor % yazın ve hemen yanına küçük bir dinamik metin kutusu ekleyin. Metin kutusunu seçin properties panelinde sağ alttaki variable alanına kutu yazın.(instance adı değil)

3- Şimdi bargrafik katmanına gelelim. Dikdörtgen aracı ile sahneye ince uzun bir dikdörtgen çizelim. Bu dikdörtgenin iç kısmını tek tıklama ile seçelim.(dış kenarlar dahil edilmeyecek)



İç kısım seçilmişken klavyeden F8 tuşuna basın. Açılan panelden movie clip seçeneğini işaretleyin.İnstance name kutusuna bar adını yazalım.Şimdi bu film klibinin merkez noktası tam ortası olacaktır.Bu durumda bar orta noktadan itibaren ilerleyecektir. Biz en soldan sağa doğru ilerlemesini istiyoruz. Bu durumda merkez noktasını en sola almamız lazım. Bunu 2 şekilde yaparız.

- En pratik yol F8 tuşuna basıp film tanımını yaparken kutunun sağ alt kısmındaki registration alanını kullanmaktır. Alttaki resimde göreceğiniz gibi varsayılan merkez noktası tam ortasıdır.Bunun hemen sol tarafındaki kutuya tek tıklama ile merkez noktasını en sol kısma almış olursunuz.



- İkinci yol sembole çevrilen barı seçip araç kutusunda free transform aracını tıklamaktır. Buna tıkladığınızda klibin etrafı seçilecektir.Fare ile orta noktadaki daireyi çekerek en sola getirin.

Klibin merkez noktasını sola aldıktan sonra yine klibi tek tıklayarak seçin ve properties paneline bakın, burada klip eninin yazıldığı "H" kutusunun karşısındaki değeri silip 2 yazın.Böylece klip 2. piksellik genişlikten itibaren başlayacaktır.

4- Herşey hazır, artık kodları yazalım. Aksiyon katmanında 1. kareyi seçerek script panelini açın. Şu kodları yazın:

yuklenen=_root.getBytesLoaded();
filmboyutu=_root.getBytesTotal();
bar._xscale=Math.round((yuklenen/filmboyutu)*100);
kutu=bar._xscale;

Önemli Uyarı= Şayet animasyonda tek sahne değil birden fazla sahne varsa _root yerine level0 yazmalısınız. Aksi takdirde sadece 1. sahnedeki animasyon boyutu esas alınır

İlk dizinde yüklenen animasyonun byte cinsinden miktarını alıyoruz.

İkinci dizinde yüklenmesi gereken byte miktarını alıyoruz.

Üçüncü dizinde basit bir matematik kuralını uyguluyoruz. Yüklenen byte miktarını yüklenecek byte miktarına bölüp 100 ile çarparsak yüzde değerini bulunur. Math.round((yuklenen/filmboyutu)*100) Buradaki Math.round çıkacak küsuratlı değeri en yakın tamsayıya yuvarlaması içindir.

Çıkan bu değeri bar klibinin _xscale değeri olarak atıyoruz. Böylece bar yüklenme değeri arttıkça sağa doğru ilerliyor.

Son olarak aynı değeri son dizinde kutu değişkenine atayarak dinamik metin kutusunda yüzde değerini rakamsal olarak görüyoruz.

5- Şimdi aksiyonlar katmanına iki keyframe daha ekleyin ekleyin.3.karedeki keyframe`i seçin ve properties panelinden basla etiket (label) adını verin.Ve bu 3. kare dahil olmak üzere asıl animasyonunu hazırlayın.

Aynı katmanda 2. kareyi seçin ve şu kodları yazın:

if (yuklenen==filmboyutu) {
gotoAndPlay("basla");
} else {
gotoAndPlay(1);
}

Bu bölümü anlamak kolaydır. Flash 2 kareye geldiğinde yüklenen byte miktarı ile yüklenmesi gerekeni karşılaştıracak bu değer eşit ise basla etiketli kareye geçerek animasyonu gösterecektir, eşitlik yoksa 1. kareye gönderilecek yüklenme işi devam edecektir.


--------------------------------------------------------------------------------

Yukarıdaki çalışma flash5 versiyonundan itibaren her versiyonda kullanılabilir.Şayet flash-mx ve üstü versiyon kullanıyorsanız çok daha pratik bir kod grubu kullanabilirsiniz.

Bu çalışmada 1.karede bar ve yüzdeyi gösteren dinamik metin kutusu ,basla etiket ismine sahip ikinci karede ise asıl animasyonumuz mevcuttur.1.kareye alttaki kodları atayıp aynı çalışmayı daha kısa bir yol ile oluşturabilirsiniz:

this.onEnterFrame=function(){
yuklenen=_root.getBytesLoaded();
filmboyutu=_root.getBytesTotal();
if (yuklenen==filmboyutu) {
gotoAndPlay("basla");
delete onEnterFrame;
} else {
bar._xscale=Math.round((yuklenen/filmboyutu)*100);
kutu=bar._xscale;
}
}
stop();

Uygulama download için Tıklayınız