Animasyonu Duraklatmak


Normalde kesintisiz devam eden sannedeki bir animasyonu istediğiniz karelerde istediğiniz süre kadar durmasını ve süre sonunda tekrar kaldığı yerden devam etmesini istiyorsanız bu ilginç getTimer fonksiyonunu kullanmalısınız.

Önce alttaki örneği izleyin. 80 karelik kesintisiz bir animasyon 40 ve 60. karelerde 5 sn duraklatılmaktadır.

 

Animasyonun detaylarına geçelim:

1- Yeni bir sayfa açın ve sahnenin en soluna bir daire çizin. Çift tıklayarak dairenin tamamını seçip F8`e basın ve davranış olarak grafik seçeneğini işaretleyin. 80.kareye bir keyframe ekleyin ve fare ile grafiği sahnenin en sağına taşıyın. 1.kareye sağ klik yapıp create motion tween komutunu verin. Kesintisiz animasyonumuz hazır.

2- Üst kısma yeni bir katman ekleyin. 40. kareyi seçin keyframe ekleyin ve sahneye burası 40. karedir gibi birşeyler yazın. 60. kareye bir keyframe ekleyip aynı işlemi uygulayın.

3- Tekrar 40 ve 60. kareleri seçip şu kodu yazın:

durmazamani=getTimer();

Daha öncede anlatıldığı gibi bir flash filmi başladığı an görülmez bir kronometre çalışır. getTimer komutu ile animasyonun herhangibir karesinden başlama anından o ana kadar geçen süre hesaplanır. Yukarıdaki komutla 40 ve 60. karede geçen süreler durmazamani adlı değişkene atanır.

4- İnsert-->New Symbol komutunu verin. Açılan panelden davranış olarak film klibini seçin. İşin tüm püf noktası bu kliptedir. Bu klibe sadece animasyonu duraklatma işlemini gerçekleştirecek scriptleri koyacağız. Yani boş bir klip olacak.

Bu tür boş klibe yazılan scriptlerle animasyonu idare etme örneklerine sıkça rastlayacaksınız. Mouse efektleri genelde bu plan üzerinden çalışırlar.

5- Boş film klibini açıp 1.kareye şu komutları yazın:

anadurmazamani = _level0.durmazamani;
ara = 5000;
_level0.stop();
if (getTimer() >= (ara + anadurmazamani)) {
_level0.play();
}

Bu komutları az sonra açıklayacağız. Şimdi klibin 2. karesine bir frame ekleyin. Bu çok önemli bir noktadır. Şayet tek karede bırakırsanız komutlar bir kez okunacak ve _level0.stop kısmında takılıp kalacaktır. 2. kare eklenmesi bir döngü sağlayacak ve komut tekrarı oluşacaktır. Şimdi açıklamalar:

anadurmazamani = _level0.durmazamani; Burada durmazamani değişkeninin aldığı değer anadurma zamani adlı başka bir değişkene atanıyor. Şayet bu durma işlemi animasyon boyunca 1 kez yapılacak olsa idi bu eklentiye gerek kalmayacaktı. _Level0 sahnedeki animasyonu gösterir. Bu alana _root` da yazılabilirdi.

ara = 5000; Burada animasyonun duracağı süre belirlenir. getTimer milisaniye cinsinden sonuç verdiğinden bu değer 5 saniyeye eşit bir değerdir.

_level0.stop(); Değişkenler belirlendikten sonra stop komutu ile animasyon durduruluyor.

if (getTimer() >= (ara + anadurmazamani)) {
_level0.play();
}

Şayet geçen zaman= 5sn + animasyonun durduğu andaki saniye toplamına eşit olursa animasyonu başlat anlamında kullanılmıştır.

anadurmazamani, flash oynatma kafası her 40 ve 60. kareleri geçtiğinde belirlenen durmazamani değişkeninin değerini aldığından döngü devam ettikçe sorunsuz çalışacaktır. Başta da dediğim gibi bu değişkeni kullanmayıp sadece durmazamani komutunu kullansa idik animasyondaki duraklama sadece 1 kez gerçekleşecek idi. Bunu denemek için aşağıdaki komutları kopyalayıp boş film klibi 1.karesine yapıştırın.

_level0.stop();
ara = 5000;
if (getTimer() >= (ara + durmazamani)) {
_level0.play();
}

6- CTRL+Enter`a basıp filminizi test edin.