Membuat Fungsi setDelay() dengan Flash AS2 (ActionScript 2.0)

Fungsi ini berawal dari keluhan saya seputar teramat panjangnya frame untuk mengatur waktu tampilan animasi yang sedang saya buat. Jika Anda mengalami keluhan-keluhan berikut, Anda datang di URL yang tepat :
1. Frame saya terlalu panjang karena frame rate saya cepat, sedangkan saya butuh tenggang waktu beberapa detik pada animasi saya.
2. Animasi saya banyak memanggil movie lain pada frame-frame di dalamnya.
3. Saya bekerja dengan animasi yang sangat panjang dan layer yang banyak. Jika ada perubahan pada frame sebelumnya, saya harus manual memindahkan dengan men-drag frame setelahnya atau men-del frame-frame lain.
4. Saya ingin menunda beberapa detik movie saya karena ada text di sana untuk dibaca penonton, tetapi tidak dengan cara memanjangkan frame karena frame rate saya cukup cepat.
5. Sebelum menampilkan movie lain, saya ingin memberi jeda beberapa detik.
6. Saya ingin berpindah dari frame satu ke frame yang lain dengan jeda beberapa saat tanpa harus memanjangkannya.
7. dsb…

Sejujurnya, fungsi ini bukan buatan saya. Saya dibantu oleh seorang teman yang mungkin dia tidak sempat menuliskan hal ini (tapi mungkin sempat membukukannya hehehehe..). Eitss, tapi jangan salah.. Walaupun masih mahasiswa semester akhir seperti saya, dia sudah mem-publish sebuah buku Flash dan terlibat dalam berbagai proyek Flash yang boleh dibilang cukup rumit dan di seantero kampus mungkin cuma dia yang bisa mengerjakannya (~lebay mode on.. hi2).

Berikut fungsi yang dia buat :

function setDelay(tipe:String,time:Number,target,parent:MovieClip){
		parent.stop();
		var temp:MovieClip=_root.createEmptyMovieClip("",_root.getNextHighestDepth());
		temp.counter=0;
		temp.onEnterFrame=function(){
				this.counter++;
				if(this.counter>=time){
						if(tipe=="movie"){
						else if(tipe=="frame"){
						this.removeMovieClip();
					}
			};
}

Copyrights @ Kristo Radion 24122009

Walaupun saya cukup amatiran Flash, tetapi saya paham maksud script di atas :
1. Nama fungsi : setDelay. Argumennya ada 4, yaitu :
a. Tipe =dengan tipe data String, fungsinya untuk memberikan tipe delay. Valuenya ada 2, yaitu : "movie" dan "frame"
b. Time=dengan tipe data Number, fungsinya untuk memasukkan jumlah waktu delay (satuan frame). Misalnya saya ingin memberi jeda 1 detik pada movie saya dengan frame rate 25 fps. Maka nilai yang saya masukkan pada argumen time bernilai 25.
c. Target=ke mana kita akan menuju setelah jeda terjadi, sesuai tipenya ada 2 kemungkinan :
i. Tipe "movie" = diisi dengan nama file .swf yang akan dipanggil.
ii. Tipe "frame” = diisi dengan nomor frame yang akan dituju. Alternatif lain, yaitu menuju ke frame selanjutnya dengan nilai : this._currentframe+1;
d. Parent:MovieClip = mau di mana action delay akan dijalankan. Apakah di movie utama Anda/root (nilainya : _root) atau pada instance Movie Clip tertentu.

2. Intinya fungsi ini membuat movie clip baru kemudian mengisinya dengan frame sesuai waktu delay yang kita kehendaki.
3. Saat frame yang dijalankan sudah mencapai batas, maka target akan dijalankan.
4. Movie clip yang ter-generate akan dibuang setelah delay dilakukan.

Cara penggunaannya :
1. Copy fungsi pada actions(F9) di frame pertama movie yang akan didelay.
2. Untuk memanggilnya tekan F9 pada objek/frame yang akan didelay. Panggil fungsi dengan nilai sesuai kebutuhan.
a. Untuk memanggil movie dengan delay 1 detik pada 25 fps.

setDelay("movie",50,"next_movie.swf",_root);

b. Untuk memanggil frame berikutnya dengan delay 2 detik pada 25 fps.

setDelay("frame",50,this._currentframe+1,_root);

c. Untuk memanggil frame ke 100 dengan delay 2 detik pada 25 fps.

setDelay("frame",50,100,_root);

Sayangnya pada penemuan pertama ini, fungsi setDelay harus dicopy setiap Anda membutuhkannya. Jadi belum bisa dipakai sewaktu-waktu. Untuk membuatnya dapat dipakai sewaktu-waktu, fungsi ini harus dijadikan Global Function. Bagaimana caranya?? Tunggu postingan berikutnya ,… hehehe (cari inspirasi dari Flash Master dulu….)

2 thoughts on “Membuat Fungsi setDelay() dengan Flash AS2 (ActionScript 2.0)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s