Custom Search
Laporkan jika ada link yang bermasalah
[ HOME ] [ FORUM ] [ JAVA ] [ JARINGAN KOMPUTER] [ OCEAN ] [ SEARCH ]

Thursday, February 12, 2009

Mengenal Class Game Canvas

ClassGameCanvas menyediakan fungsi-fungsi penting dalam menangani interface game. Merupakan turunan dari Class Canvas (commands, input events, etc.), dengan penambahan fitur antara lain kemampuan game yang spesifik seperti: off-screen graphic buffer dan kemampuan untuk mengetahui status key-key input dari key-key pada HP. Kelas GameCanvas pada MIDP 2.0 telah mengusung fitur-fitur penting yang mengatasi masalah yang ada pada MIDP 1.0. Yaitu sekarang kita cukup menggunakan sebuah (single) buffer untuk setiap obyek GameCanvas yang dibuat. Ini sangat penting karena tidak hanya meminimalkan penggunaan heap memory yang digunakan oleh game. Tetapi juga agar game bisa dikontrol dengan hanya menggunakan sebuah (single) loop. Untuk sekedar diketahui, berikut cara lama looping sebuah game (MIDP 1.0):

public void theGameCanvas extends Canvas implements Runnable {
public void run() {
while (true) {
repaint(); // update tampilan game pada display
}
}
public void paint(Graphics g) {
// painting // redraw occurs here
}
protected void keyPressed(int keyCode) {
// obtain user inputs
}
}


Seperti kita lihat pada kode di atas ada tiga bagian fungsi berbeda yaitu, bagian penggambar (painting) pada screen, bagian run(), dan pembaca input key. Ketiganya berjalan pada masing-masing thread yang berbeda. Karena thread yang berbeda itulah terkadang ada jeda dan kelambatan respon terutama terlihat pada jenis game arcade/action yang membutuhkan banyak permainan graphic dan interaktifitas tinggi. Namun sekarang, pada MIDP 2.0 dan implementasi GameCanvas, semua kode tampak bersih, lebih mudah digunakan dan efisien. Yaitu karena menggunakan single thread, GameCanvas tidak lagi menunggu sebuah event keyPressed tetapi sudah diganti dengan teknik polling, artinya kita bisa membaca key-key mana yang ditekan pada suatu saat dengan menggunakan method getKeyState() yang sudah disediakan oleh GameCanvas. Karena menggunakan teknik buffering pada GameCanvas, yang disebut double
buffering, penggambaran pada screen/display dilakukan otomatis (tanpa mendefinisikan sebuah thread tersendiri). Kita hanya perlu memanggil method flushGraphics() untuk menampilkan graphics ke display. Teknik Double Buffering tersebut dimaksudkan untuk menghindari flickering (efek berkedip) pada display dengan cara menggambar graphics ke file image sementara (temporary) secara off set (di background), dan akan ditampilkan ke display begitu file image sudah terisi graphics lengkap.

No comments:

Post a Comment