Mohon tunggu...
Chynsa Afryzar
Chynsa Afryzar Mohon Tunggu... -

TETAP SEMANGAT

Selanjutnya

Tutup

Inovasi

Pemrograman Grafis Midlet

10 September 2015   13:30 Diperbarui: 10 September 2015   13:38 157
+
Laporkan Konten
Laporkan Akun
Kompasiana adalah platform blog. Konten ini menjadi tanggung jawab bloger dan tidak mewakili pandangan redaksi Kompas.
Lihat foto
Inovasi. Sumber ilustrasi: PEXELS/Jcomp

PEMROGRAMAN GRAFIS MIDLET

        Dengan hal level API pemrogram dapat membuat berbagai antar muka MIDlet standar yang digunakan untuk menerima masukan teks, password, menampilkan image dan lain sebagainya. Pemrogram hanya mendefinisikan ”isi” dari user interface tersebut, menampilkan kepada pengguna dan kemudian mendapatkan hasilnya.

        Namun jika diperhatikan secara lebih seksama, komponen-komponen tersebut tidak akan cukup memadai dalam hal-hal lain semacam untuk keperluan game, seperti mengetahui penekanan tombol oleh pengguna maupun mengakses pixel pada layar. Dan low level API pun hadir sebagai solusi dari permasalahan tersebut.

        Low Level API menyediakan fungsi-fungsi untuk mengakses grafis pada layar aplikasi, menggambat dan mengolah sesuatu yang level-nya sudah pixel-pixel gambar serta pembacaan event penekanan tombol maupun pointer pada perangkat handheld devices yang mendukung input touch-screen. Pemrogram bertanggung jawab sepenuhnya pada interaksi dari layar aplikasi yang menggunakan low level API dalam menyediakan interaksi yang nyaman bagi pengguna.

        Selain menangani fungsi-fungsi untuk antar muka berbasis window, package javax.microedition.lcdui juga menyediakan fungsi-fungsi untuk menangani antar muka berbasis canvas, seperti menggambar garis (line), titik, lingkaran, ellips, persegi panjang, mewarnai canvas dan elemen-elemen dasar lain.

       

 

8.1. CLASS CANVAS

 

 

        Class canvas merupakan class yang menyediakan fungsi-fungsi dan lingkungan yang tepat bagi aplikasi yang membutuhkan manaje-men antar muka dan event pada level rendah hendeld devices (low level user interface dan low level event). Penggunaan yang utama dari class canvas ini adalah pada aplikasi game, karena class canvas men-dukung penempatan objek-objek grafis dan pembacaan tombol.

 

        Clas canvas ini merupakan class abstrak sekaligus turunan dari class displayable. Karena merupakan kelas abstrak, maka pemrogram tidak dalapat langsung menggunakan class ini dalam aplikasi MIDlet, melainkan harus membuat class turunannya dahulu yang mendefinisi-kan method paint() untuk melakukan manajemen antar muka pada level rendah. Method paint() lah yang akan dipanggil oleh sistem ketika diperlukan update tampilan layar.

 

        Penggunaan class canvas umumnya bersamaan dengan class graphics, karena class graphics lah yang menyediakan objek-objek grafik dan fungsi-fungsi lain untuk memanipulasi grafik level rendah.

 

 

8.2. CLASS GRAPHICS

 

 

        Class canvas tidak memiliki fungsi-fungsi atau method untuk melakukan operasi-operasi grafis. Operasi grafis pada canvas dilaku-kan melalui objek graphics yang menjadi parameter method paint() milik class canvas tersebut.

 

        Operasi-operasi yang dapat dilakukan oleh class graphics tersebut (javax.microedition.lcdui.Graphics) meliputi operasi grafis dua dimensi, operasi tingkat pixel, operasi grafis geometri (garis/ line, objek-objek persegi/ rectangle, objek-objek lengkungan), penggambaran teks dan manipulasi warna serta penempatan gambar dari objek image.

8.2.1. Tentang Warna

        Pada user interface berbasis canvas dimungkinkan melakukan pewarnaan misalnya untuk mewarnai teks, mewarnai garis, persegi atau lengkungan dan operasi-operasi lain pada objek graphics. Warna yang disediakan oleh class graphics adalah 24 bit dengan masing-masing 8 bit untuk warna merah (red), 8 bit untuk warna hijau (green) dan 8 bit untuk warna biru (blue). Berikut ini adalah method-method penting yang berkaitan dengan pewarnaan yaitu :

  • public void setColor(int red, int green, int blue);

Parameter-parameter red, green dan blue masing-masing berkaita dengan warna dasar yakni merah, hijau dan biru, nilainya berada diantara 0 – 255.

  • public void setColor(int RGB);

Memiliki fungsi yang serupa dengan method di atas, namun ber-beda pada parameter. Format parameter RGB adalah 0XRRGGBB di mana bagian RR untuk warna merah (red), GG untuk warna hijau (green), BB untuk warna biru (blue) dan nilainya heksadeci-mal (00 – FF).

  • public void setGrayScale(int scale);

Parameter scale adalah tingkat grayscale yang berkisar antar 0 – 255. Tidak semua perangkat handheld devices telah mengguna-kan sistem pewarnaan RGB. Banyak perangkat handheld devices yang masih menggunakan sistem pewarnaan grayscale, oleh karenanya disediakan pada method ini.

  • public int getColor();

Menghasilkan informasi nilai warna yang saat ini aktif. Nilainya berformat 0XRRGGBB.

  • public int getRedComponent();

Menghasilkan informasi nilai warna merah yang saat ini aktif. Nilainya berkisar antara 0 – 255.

  • public int getGreenComponent();

Menghasilkan informasi nilai warna hijau yang saat ini aktif. Nilainya berkisar antara 0 – 255.

  • public int getBlueComponent();

Menghasilkan informasi nilai warna biru yang saat ini aktif. Nilainya berkisar antara 0 – 255.

  • public int getGrayScale();

Menghasilkan informasi nilai warna grayscale yang saat ini aktif. Nilainya berkisar antara 0 – 255.

 

8.2.2 Penggambaran Teks

 

        Setelah menetapkan warna sesuai dengan yang diinginkan, selan-jutnya dapat menambahkan teks pada layar canvas. Class graphics mendukung operasi penggambaran teks, baik secara per karakter, string maupun sub-string. Berikut adalah methid-method penting yang berkaitan dengan penggambaran teks yaitu :

  • public void drawString(String str, int x, int y, int anchor);

Digunakan untuk menambahkan string pada posisi x dan y, dengan aturan sesuai dengan nilai anchor (untuk memudahkan penggambaran teks). Anchor point digunakan untuk menentukan penempatan teks relatif terhadap koordinat yang ditunjuk. Nilai anchor merupakan gabungan dari konstanta statik pada class javax.microedition.lcdui.Graphics

  • public void draw Char(char c, int x, int y, int anchor);

Digunakan untuk menambahkan sebuah karakter pada posisi x dan y, dengan aturan posisi sesuai dengan nilai anchor. Nilai anchor point ini sama dengan aturan pada method drawString().

  • public void drawSubstring(String str, int offset, int length, int x, int y, int anchor):

Digunakan untuk menggambarkan sub string dari suatu string.

8.2.3. Penggunaan Font

        Graphics menggambarkan teks berdasarkan objek Font yang sedang aktif. Class Font (javax.microedition.lcdui.Font) digunakan untuk memanipulasi tipe font yang disediakan oleh perangkat handheld devices. Yang harus diperhatikan bahwa font tidak bisa dibuat oleh aplikasi. Aplikasi hanya bisa meminta font yang diinginkan sesuai tipe, ukuran dan atribut lain (seperti ukuran/ size, corak/ style, dan tipe/ face) dan setelah itu, sistem akan mengembalikan font yang paling sesuai dengan apliaksi.

        Font tidak bisa dibuat objeknya karena tidak mempunyai construc-tor public. Untuk membuat objek font, dilakukan dengan memanggil fungsi static getFont() yang disediakan oleh class Font 

Font f = Font.getFont(FACE_SYSTEM, STYLE_PLAIN, SIZE_SMALL);

 

8.2.4 Grafis Geometri

 

        Class graphics juga dapat digunakan utnuk mendukung pembuata operasi grafis dua dimensi, seperti pembuatan garis, persegi atau persegi panjang dengan sudut lancip, tumpul dan ellips atau leng-kungan. Method-method yang berhubungan dengan operasi grafis geometri duat dimensi yaitu :

  • public void drawLine(int x1, int y1, int x2, int y2);

Menggambarkan garis (line) dari koordinat (x1, y1) sampai dengan koordinat (x2, y2).

  • public void drawRect(intx, int y, int width, int height);

Menggambarkan segi empat dengan koordinat pojok kiri atas (x, y) dan lebar = width serta tinggi = height.

  • public void fillRect(intx, int y, int width, int height);

Memiliki fungsi yang sama dengan drawRect, namun segi empat yang tergambar langsung terisi oleh pengarsiran sesuai dengan warna yang saat ini sedang aktif digunakan.

  • public void drawRoundRect(int x, int y, int widht, int height, ind arcWidth, int arcHeight);

Menggambar segi empat dengan koordinat pojok kiri atas (x, y) dan lebar = width serta tinggi = height, tinggi lengkungan sudut = arcHeight serta lebar lengkungan sudut = arcWidth.

 

  • public void fillRoundRect(int x, int y, int widht, int height, ind arcWidth, int arcHeight);

Memiliki fungsi yang sama dengan method drawRoundRect, namun segi empat yang tergambar langsung terisi oleh pengarsiran sesuai dengan warna yang saat ini sedang aktif digunakan.

 

  • public void draw Arc(int x, int y, int width, int height, int startAngle, int arcAngle);

Menggambarkan lengkungan dengan koordinat pojok kiri atas adalah (x, y) dengan ukuran lebar = width sera tinggi = height. Sudut awal adalah startAngle dan arcAngle merupakan nilai sudut relatif terhadap sudut awal. Sudut nol derajat dalam hal hal ini adalah posisi jam 3; dan pertambahan sudut, yakni yang nilainya ditentukan oleh arcAngle adalah berlawanan dengan jarum jam.

  • public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle);

Memiliki fungsi yang sama dengan method drawArc, namun lengkungan yang tergambar langsung terisi oleh pengarsiran sesuai dengan warna yang saat ini sedang aktif digunakan.

  • public void setStrokeStyle(int style);

Mengubah method pembuatan objek geometri. Style ini dapat ber-nilai SOLID (menggambar dengan menggunakan garis utuh) atau DOTTED (menggambar dengan menggunakan garis putus-putus). Nilai default dari method ini adalah SOLID.

  • public void getStrokeStyle();

Mendapatkan metode pembuatan objek geometri yang sedang aktif saat ini. Jika tidak ditentukan sebelumnya, maka akan meng-hasilkan nilai defaultnya yaitu SOLID.

 

       

8.3. CLASS IMAGES

 

 

 

 

 

Class image adalah class yang menyimpan data gambar. MIDP 1.0 hanya mengharuskan dukungan bagi gambar dengan format PNG bagi perangkat yang mengimplementasikannya. Objek image setelah dibuat, nantinya dapat dipergunakan oleh objek graphics dengan pemanggilan method drawImage() dengan bentuk umum :

          drawImage(Image img, int x, int y, int anchor);

        Anchor yang dipergunakan sama seperti anchor pada teks, hanya saja khusus untuk image dapat dipergunakan anchor VCENTER, namun tidak ada anchor BASELINE.

        Objek image sendiri ada dua jenis yaitu objek image imutable, adalah objek image yang tidak dapat diubah setelah dibuat, serta objek image mutable, adalah objek yang dapat diubah nilai pixelnya. Kebanyakan dari aplikasi MIDlet hanya membutuhkan objek image imutable. Image imutable dapat dibuat melalui pemanggilan method createImage() dengan tiga cara, yaitu :

 

  • createImage(String name);

Pembuatan dari file PNG

  • createImage(byte[] ImageData, int ImageOffset, int ImageLength);

Pembuatan dari array byte

  • createImage(Image source);

Pembuatan dari objek Image

File akan dibaca dari file data PNG yang berada pada paket JAR MIDlet terssebut. Pembacaan dari array byte dapat dipergunakan untuk membuat gambar yang diambil dari stream yang berasal dari network atau file. Sedangkan pembuatan dari objek image dapat dipergunakan untuk membuat objek image imutable dari objek image mutable, misal-nya untuk penggunaan pada Alert, Choice dan Form harus mengguna-kan image imutable.

 

Sedangkan image mutable dibuat dengan menggunakan method createImage dengan parameter lebar dan tinggi gambar tersebut. Image yang dibuat dengan cara ini dapat diambil referensi objek graphics-nya melalui pemanggilan method getGraphics() sehingga dapat dimanipulasi dengan kode pemrograman.

 

Method lain yang sering dipakai pada class image adalah method getWidth() dan getHeight() yang akan mengembalikan ukuran lebar dan tinggi gambar yang dikandungnya dalam satuan pixel.

 

8.4. EVENT PADA CANVAS

 

 

 

 

 

Dalam penanganan event pada level rendah (low level event) tidak disediakana antar muka khusus sebagaimana penanganan event pada level tinggi (high level event). Namun penanganan event pada level rendah dilakukan oleh fungsi-fungsi yang disediakan oleh class canvas (javax.microedition.lcdui.Canvas) itu sendiri. Oleh karena itu, class canvas mampu mendeteksi penekanan tombol keypad ataupun mende-teksi pointer pada perangkat yang menggunakan layar touch screen. Berikut ini adalah method-method yang digunakan untuk menangani event pada class canvas, yaitu :

 

  • protected void keyPressed(int keyCode);

Method yang digunakan untuk mendeteksi sebuah tombol keypad yang sedang ditekan.

  • protected void keyReleased(int keyCode);

Method yang digunakan untuk mendeteksi sebuah tombol keypad selesai ditekan.

  • protected void keyRepeated(int keyCode);

Method yang digunakan untuk mendeteksi sebuah tombol keypad yang ditekan secara terus menerus.

  • protected void pointerPressed(int keyCode);

Method yang digunakan untuk mendeteksi pointer yang sedang ditekan.

  • protected void pointerDragged(int keyCode);

Method yang digunakan untuk mendeteksi pointer yang sedang ditekan dan digerakkan.

  • protected void pointerReleased(int keyCode);

Method yang digunakan untuk mendeteksi pointer yang dilepas.

  • protected void showNotify();

Method yang digunakan untuk menampilkan objek canvas.

 

  • protected void hideNotify();

Method yang digunakan untuk menyembunyikan objek canvas.

        Karena keanekaragaman jenis perangkat handheld devices menyebabkan tidak semua method di atas dapat diimplementasikan pada semua emulator atau perangkat aslinya, misalnya pada method pointerPressed(), pointerDragged(), pointerRelease() dan keyPressed() yang tidak selalu tersedia pada sebuah perangkat, sehingga perlu dilakukan pengecekan terlebih dahulu dengan menggunakan method-method berikut :

  • public boolean hasPointerEvents

Method yang digunakan untuk memeriksa apakah sebuah perang-kat mendukung masukan pointer (sejenis touch screen pada Palm dan Pocket PC) atau tidak. Method ini berkaitan dengan dimungkin kannya penggunaan method pointerPressed() dan pointerReleased() pada sebuah perangkat atau tidak.

 

  • public boolean hasPointerMotionEvents();

Method yang digunakan untuk memeriksa apakah sebuah perangkat memungkinkan penggunaan method pointerGragged().

  • public boolean hasRepeatEvents();

Method yang digunakan untuk memeriksa apakah sebuah perangkat memungkinkan penggunaan method keyRepeated().

 

  • Public boolean isDoubleBeffered();

Method yang digunakan untuk memeriksa apakah sebuah perang-kat memungkinkan menggunakan double buffering.

 

        Untuk pembuatan aplikasi MIDlet berupa permainan (game), terka-dang pendeteksian penekanan tombol keypad saja kurang cukup. Beberapa jenis perangkat handheld devices menyediakan tombol navigasi tersendiri untuk ke atas, bawah, kiri ataupun kanan. Sedang-kan pada perangkat yang lain melakukan hal yang sama dengan meng-gunakan tombol numerik pada keypad.

 

        Untuk memudahkan pembuatan aplikasi permainan dengan port-abilitas tinggi, tersedia method getGameAction(). Method ini mengguna-kan kode penekanan tombol sebagai parameternya dan akan mengha-silkan kode untuk aplikasi permainan yang tepat sesuai dengan perang-kat MID tempat aplikasi tersebut dijalankan.

Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H

HALAMAN :
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
Mohon tunggu...

Lihat Konten Inovasi Selengkapnya
Lihat Inovasi Selengkapnya
Beri Komentar
Berkomentarlah secara bijaksana dan bertanggung jawab. Komentar sepenuhnya menjadi tanggung jawab komentator seperti diatur dalam UU ITE

Belum ada komentar. Jadilah yang pertama untuk memberikan komentar!
LAPORKAN KONTEN
Alasan
Laporkan Konten
Laporkan Akun