Membuat Animasi Java Dengan Swing Timer

Halo guys, kali ini kita akan mencoba membuat animasi Java dengan menggunaan Swing Timer. Tapi sebelumnya apa sih yang dimaksud dengan animasi itu? Ternyata animasi itu hanyalah urutan tampilan gambar yang sangat cepat sehingga mata kita melihatnya sebagai sebuah pergerakan.

Mendengar kata bergerak, jika Anda bergerak dari suatu titik maka dalam koordinat tentu saja sebuah objek akan berada dalam suatu titik (x, y) dan akan bergerak menuju titik (x, y) lainnya.

Namun karena program menampilkan (merender) urutan itu dengan cepat maka mata kita melihatnya sebagai sebuah pergerakan. Dengan Timer maka satu atau beberapa event action dalam menampilkan gambar akan dilakukan setelah “DELAY” tertentu.

membuat animasi java dengan swing timer

Dalam Java sebenarnya ada 3 cara dasar untuk untuk melakukan animasi ini, yaitu dengan:

  • Swing Timer
  • Utility Timer
  • Thread

Swing Timer yang akan kita gunakan kali ini adalah cara membuat animasi yang paling mudah tetapi juga bukan yang paling efektif untuk animasi pada Java, terutama jika Anda membuat games. Di mana animasi bisa menjadi topik yang sangat kompleks. Sedangkan animasi menggunakan Thread akan memberikan solusi timing yang lebih akurat.

But, anyway, lebih baik kalau Anda mengetahui cara yang paling mudah, yaitu dengan Swing Timer terlebih dahulu. Oh, iya, di sini juga Anda akan belajar mengenai teknik double buffering yang akan menghilangkan flickering atau gambar berkedip-kedip ketika animasi berjalan.

Ok, ikuti langkah-langkah berikut:

1. Buat project baru pada IDE Netbeans, di siniĀ  di beri nama Animasi Swing Timer, lalu klik Finish.

2. Kemudian klik kanan pada project buat sebuah folder dan beri nama folder itu images, lalu klik Finish.

buat new folder pada project

 

3. Kemudian bukalah folder tempat project yang anda buat itu di simpan.

Biasanya terdapat di: NetBeansProjects>Animasi Swing Timer>images

Siapkan sebuah gambar untuk animasi, lalu copy dan paste gambar tersebut ke folder images. Di sini digunakan gambar dengan ekstensi .png seperti di bawah ini.

bumi.png

Anda bisa menggunakan gambar bebas, tapi nama file gambar dan ekstensi filenya yang penting untuk di ketahui. Kalau ukuran gambar bila di rasa terlalu besar bisa disesuaikan lebih dulu sebelum digunakan.

4. Kembali ke IDE Netbeans, sekarang Anda harus menambahkan gambar itu sebagai source pada project yang Anda buat, dengan cara:

a. Klik kanan pada icon project

b. Klik Properties

c. Pada Project Properties di bagian Categories pilih Sources, lalu pada klik Add Folder pada bagian Source Package Folders, kemudian pilih folder images yang sudah anda buat yang berisi gambar animasi tersebut.

add project folders

Bila sudah, Anda akan melihat tampilan seperti ini:

5. Buat sebuah class baru dengan nama: CanvasAnimasiDenganJTimer. Class ini adalah sebuah canvas di mana gambar-gambar diletakkan.

Berikut ini adalah coding pada class tersebut:

6. Buat sebuah class dengan nama FrameAnimasi. Class ini adalah sebuah frame untuk meletakkan canvas. Pada class ini juga terdapat main method untuk mengeksekusi program.

Sekarang coba jalankan programnya.

flickering java animation

Bisa Anda lihat kalau animasi ini berhasil namun gambar tampak berkedip-kedip atau flicker. Kenapa bisa demikian? Ini terjadi karena Java melakukan paint dan repaint dengan mengambil gambar dari sistem dan proses itu tidak cukup cepat sehingga user atau Anda bisa menyadarinya dengan melihat gambar tampak berkedip. Oleh sebab itu, digunakan double buffering.

Animasi Dengan Double Buffering

Teknik double buffering biasa digunakan untuk menghindari flickering pada Java atau komputer grafis karena proses menggambar atau render dilakukan pada offscreen buffer image kemudian barulah seluruh konten buffer tersebut disalin sekaligus pada layar.

Berikut ini adalah kode program dengan menggunakan double buffering, dengan perubahan kode pada class :

Output:

java animation double buffering without flickering

Nah, demikianlah cara membuat animasi dasar dengan menggunakan program Java dan Timer dari class javax.swing.SwingUtilities. Pada program ini Anda menggambar pada canvas dan telah mengetahui bagaimana double buffering bisa mengatasi gambar flickering pada saat animasi berjalan. Semoga bisa bermanfaat untuk Anda, dan mohon di share jika berkenan. Happy coding guys.

Be the first to comment

Leave a Reply

Your email address will not be published.


*