Bir Animasyonu Tersinden Oynatma



Flash animasyonlarını tersinden oynatma teknikleri çok sık sorulan sorular arasındadır. Flash kodları arasında bu tür bir çalışmanın oluşumunu sağlayacak bir eklenti yoktur. Ancak _currentframe kodu ve bu çalışmayı aktive edecek boş bir kontrol filmi ile flash oynatma kafasını tersine çalıştırmak mümkündür.

Bildiğiniz gibi _currentframe o anda flash oynatma kafasının bulunduğu karenin numarasını verir. Bir sayaç oluşturarak bu numara birer bire azaltılır ve film geriye doğru hareker edebilir.

Önce alttaki animasyonu inceleyiniz:
Burada planlanan 70 kareden oluşan bir animasyondur. Animasyonu çalıştırmak için başlat butonuna basın. 70. karede film duracak ve bir geri al butonu ortaya çıkacaktır.

Geri al butonuna bastığınızda film önce 55.kareye gelecek ve buradan itibaren 10.kareye kadar geri geri çalışıp 10.karede duracaktır. Şimdi alttaki animasyonu oynatıp deneme yapabilirsiniz.

DOSYAYI İNDİR   

Animasyonu oluşturalım:

1- Önce sahnede animasyonumuzu hazırlayalım. Bizim kullandığımız animasyon 70 kareden oluşmuştur.Animasyon katmanımız üzerine yeni bir katman ekleyelim ve 1. ve 70. karelere birer blank keyframe ekleyelim. 1.kareye başlat, 70. kareye gerial butonu ekleyelim.

2- En üst kısma 3. bir aksiyon katmanı ekleyelim. 1. ve 70. karelere birer stop komutu koyalım.

3- CTRL+F8`e basarak veya Insert-->New Symbol komutunu vererek sembol ekleme kutusunu açalım. Davranış olarak film klibi seçeneğini kullanalım.Aynı panelde sağ altta eğer açık değilse Advanced butonuna basalım. Linkage bölümünde Export for Actionscript alanını işaretleyelim ve ID kısmına isim olarak kontrol_klip yazalım.(Bu linkage kısmına kütüphanedende ulaşabilirsiniz. Kütüphanede dosya üzerine sağ klik yapıp linkage kısmına tıklayınız)

Bu klip içine daha sonra kod ekleyeceğiz ve geri gitme işleminde kontrol klip olarak kullanacağız. Filmi sahneye eklemeyin. AttachMovie yöntemi ile sahneye tutturacağız. Sahneye yerleştirmeme nedenimiz buradaki kodların animasyonu etkilememesi içindir. bu kodlara ihtiyaç duyduğumuzda klip attachmovie komutu ile bir buton aracılığıyla çağrılacaktır.

4- Anasahneye dönelim ve 1.karedeki başlat butonu seçerek:

on (release) {
play();
}

Filmimizi bu komut oynatmaya başlayacaktır.

5- 70.karedeki geri butonunu seçelim ve şu komutları atayalım:

on (release) {
_root.attachMovie("kontrol_klip","yenikontrol",0);
}

Butona basıldığında ID olarak kontrol_klip adı verilen ve eklendiğinde yeni adı yenikontrol olan filmimiz Ana timeline`a tutturulacak ve buradaki kodlar çalışmaya başlayacaktır.

6- Şimdi kontrol klibimizin kodlarını hazırlayalım. Kütüphaneyi açalım, kontrol_klip üzerine çift tıklayarak filmimizi açalım.

1.kareyi seçelim ve komutlarımızı ekleyelim:

sayac=1;
_root.gotoAndStop(55);

Burada sayac adında bir değişken oluşturup değer olarak 1`i atıyoruz.İkinci kısımda animasyonumuzu butona tıklandığında 55.kareye gitmesini söylüyoruz. Çünkü planımız 55.kareden itibaren filmi geri almaktı.

2.kareye bir keyframe atayalım ve buraya:

_root.gotoAndStop(_root._currentframe-sayac);
if (_root._currentframe==10) {
stop();
}

1.dizide filmimizin bulunduğu kareden 1 değerini çıkartıyoruz , filmimizin bu karede durmasını söylüyoruz. (1.karedeki komutlardan dolayı o anki kare numaramız 55 idi.Bundan 1 çıkınca 54.karede film duracaktır.)

İkinci dizideki if komutu geri oynama işleminin 10.karede sonlanmasını sağlamak içindir.10.kareye gelinmediği takdirde bu komut gözardı edilir. Oynatma kafası 10.kareye gelince bir sonraki komut devreye girer ve stop ifadesi nedeni ile film o karede kalır.

3.kareye boş bir keyframe atayalım.Boş kare eklenmesinin nedeni filmin geri hareketinin hızını azaltmak içindir. Geri hareketinin hızını daha da azaltmak istiyorsanız birden fazla boş kare eklemelisiniz.

4.kareye tekrar bir keyframe koyalım ve buraya gotoAndPlay(2); komutunu atayarak 2. karedeki komutların devamlı çalışmasını sağlayalım.

Oynatma başlığı tekrar ikinci kareye geldiğinde mevcut karemiz 53 idi . 53-1=52 . Bu sefer oynatma kafası 52. kareye geri gelecektir. 4.kareye gelince tekrar 2.kareye atlayacak 1.kare eksilerek 52, 51,50..........10. kareye kadar gerileyecektir. Bu kareye geldiğinde 2. karedeki if komutu devreye girip stop komutunu aktive ederek filmi bu karede durduracaktır.

EK BİLGİLER: Geri alma işlemini birden fazla kullanmak isterseniz her işlem için yukarda hazırladığımız kontrol_klibinin yenisini oluşturmalı ve bu klibi sahneye tutturmalısınız.

Burada 2.klibi tutturmadan önce removeMovieClip(_root.yenikontrol); yazmalısınız. Yenikontrol geri al butonuna bastığımızda tutturduğumuz klibin yeni adıdır. Burada ID adını kullanırsanız sonuç alamazsınız.

Bunun dışında bu tür bir çalışma mutlaka ana timeline `da değil bir film klibi içinde yapılabilir.