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.
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.