BB Bab 6 Edit (Autosaved)

110
Dasar-Dasar Aplikasi BlackBerry Sebuah smartphone BlackBerry dapat menjalankan aplikasi Java yang sama ---- disebut MIDlet ---- bahwa Java biasa handset ME dapat berjalan. Namun, untuk membuat aplikasi yang lebih baik terpadu dengan filosofi platform BlackBerry, RIM telah menetapkan jenis alternative aplikasi, sering disebut RIMlet. Dalam bab ini, Anda akan melihat bagaimana mengembangkan, membangun, dan install kedua MIDlets dan RIMlets. Anda juga akan mempelajari beberapa perbedaan antara dua untuk membantu Anda memutuskan jenis aplikasi yang terbaik untuk permainan Anda. BlackBerry dan MIDP Ragam adalah norma untuk perangkat kecil, jadi Java ME dirancang untuk menjadi cukup fleksibel untuk mengakomodasi berbagai perangkat. Setiap perangkat memiliki konfigurasi dan profil untuk define kemampuan persisnya Java. Konfigurasi pada tingkat dasar, menentukan Java Virtual Machine (JVM) dan Java yang paling dasar perpustakaan ----- dasarnya java itu .* interface pemrograman aplikasi (API). Profil dibangun di atas konfigurasi, menetapkan siklus hidup aplikasi dan sebagian besar perpustakaan Java (sebagian besar javax .* API). Kebanyakan perangkat tambahan juga mendukung API, baik yang didefinisikan dalam standar API. Spesifikasi java Permintaan (JSRs) melalui Java Community Process (JCP) dan API milik seperti net.rim RIM .* API. Platform smartphone BlackBerry dibangun pada Connected Limited Device Configuration (CLDC) dan Informasi Profil Mobile Device (MIDP). Ini adalah standar kombinasi konfigurasi / profile untuk telepon

Transcript of BB Bab 6 Edit (Autosaved)

Page 1: BB Bab 6 Edit (Autosaved)

Dasar-Dasar Aplikasi BlackBerry

Sebuah smartphone BlackBerry dapat menjalankan aplikasi Java yang sama ----

disebut MIDlet ---- bahwa Java biasa handset ME dapat berjalan Namun untuk

membuat aplikasi yang lebih baik terpadu dengan filosofi platform BlackBerry RIM telah

menetapkan jenis alternative aplikasi sering disebut RIMlet Dalam bab ini Anda akan

melihat bagaimana mengembangkan membangun dan install kedua MIDlets dan

RIMlets Anda juga akan mempelajari beberapa perbedaan antara dua untuk membantu

Anda memutuskan jenis aplikasi yang terbaik untuk permainan Anda

BlackBerry dan MIDP

Ragam adalah norma untuk perangkat kecil jadi Java ME dirancang untuk menjadi

cukup fleksibel untuk mengakomodasi berbagai perangkat Setiap perangkat memiliki

konfigurasi dan profil untuk define kemampuan persisnya Java Konfigurasi pada

tingkat dasar menentukan Java Virtual Machine (JVM) dan Java yang paling dasar

perpustakaan ----- dasarnya java itu interface pemrograman aplikasi (API) Profil

dibangun di atas konfigurasi menetapkan siklus hidup aplikasi dan sebagian besar

perpustakaan Java (sebagian besar javax API) Kebanyakan perangkat tambahan

juga mendukung API baik yang didefinisikan dalam standar API Spesifikasi java

Permintaan (JSRs) melalui Java Community Process (JCP) dan API milik seperti

netrim RIM API Platform smartphone BlackBerry dibangun pada Connected Limited

Device Configuration (CLDC) dan Informasi Profil Mobile Device (MIDP) Ini adalah

standar kombinasi konfigurasi profile untuk telepon selular yang digunakan oleh

mayoritas Java-enabled handset Jadi telepon seluler khas aplikasi Java (MIDlet) akan

dijalankan pada BlackBerry Namun kehidupan MIDlet isnta sesuai siklus sempurna

untuk platform BlackBerry dan benar-benar ada beberapa kelemahan dalam desain

dalam penanganan) layar-dan perpustakaan MIDP user interface Jadi RIM ditetapkan

jenis alternatif dari aplikasi (kadang-kadang disebutRIMlet) dengan sendiri siklus

hidup dan user interface Saat menulis aplikasi untuk smartphone BlackBerry terlepas

dari apakah Anda menulis MIDlet atau RIMlet Anda biasanya akan menggunakan baik

MIDP API dan API RIM Gambar 2-1 menggambarkan bagaimana berbagai komponen

sesuai Java bersama-sama

Gambar 2-1 Komponen-komponen dari platform Java BlackBerry

Kebanyakan smartphone BlackBerry mengimplementasikan MIDP 20 di atas CLDC

11 yang merupakan versi yang paling umum ditemukan di) handset MIDP Beberapa

perangkat BlackBerry awal diimplementasikan MIDP 10 tetapi mereka jarang dan

tidak kompatibel dengan RIM Java pengembangan alat Ada juga versi ketiga dari

MIDP yang telah di) JCP untuk tahun dan akhirnya melewati persetujuan akhirnya

suara pada bulan November tahun 2009 BlackBerry akhirnya dapat mendukung

platform MIDP 3 versi 3 (JSR 271) Tapi MIDP sejak 3 sebagian besar berkaitan

dengan hal-hal seperti konkurensi aplikasi dan berbagi perpustakaan (yang RIM

platform sudah menangani dengan cara sendiri milik perusahaan) dan sejak RIM

berpartisipasi pada JSR 271 pada tim spesifikasi pergeseran untuk MIDP 3 harus

relatif tanpa rasa sakit jika dan ketika tiba smartphone BlackBerry juga biasanya

memiliki beberapa standar tersedia opsional API seperti Wireless Messaging API (JSR

120) dan Personal Manajemen Informasi API (JSR 75)

Sebenarnya MIDP CLDC dan bahkan Java ME sendiri semua didefinisikan dalam

JSRs yang tersedia untuk di-download di situs web JCP (httpjcporg) Ini adalah ide

yang bagus untuk Java ME pengembang untuk menjadi akrab dengan situs web JCP

karena spesifikasi JSR mendefinisikan permainan apa yang da pat Anda lakukan pada

handset tertentu Tidak seperti Standar dan Enterprise Edition pemrograman Java di

Java ME Anda harus menghadapi kenyataan bahwa perangkat yang berbeda telah set

berbeda API tersedia untuk Anda gunakan dan untuk perangkat paling set yang

tersedia API tidak dapat diubah Entah produsen perangkat menerapkan JSR diberikan

atau fungsi yang terkait tersebut tidak tersedia pada perangkat tersebut Dalam kasus

BlackBerry Anda dapat melihat secara tepat yang diimplementasikan JSRs yang model

ini video berguna pada BlackBerry pengembang situs

wwwblackberrycomDevMediaLibraryviewdoname=JSRSupport

(Halaman-halaman dari situs pengembang tampaknya untuk bergerak dengan frekuensi

tertentu sehingga jika video tidak saat ini di URL di atas Anda mungkin dapat

menemukannya dengan melihat ke sekeliling) Situasi dengan BlackBerry sedikit

berbeda karena mungkin untuk meningkatkan sistem operasi (dan akibatnya API Java)

pada BlackBerry Namun sebagian besar pengguna BlackBerry tidak akan meng

upgrade sistem operasi sehingga dalam praktiknya Anda harus menghadapi dengan

mendukung berbagai API yang berbeda ----- Java bahkan jika smartphone BlackBerry

adalah Anda hanya target platform

Bagaimana Aplikasi Java BlackBerry Pekerjaan

Perangkat lunak yang bertanggung Javab untuk menginstal aplikasi Java dan

menjalankan disebut aplikasi manajemen sistem (AMS) AMS meluncurkan aplikasi dan

pengguna melewati masukan bersama untuk aplikasi dengan memanggil fungsi yang

sesuai Untuk MIDlet itu berarti memanggil startApp() method of the

javaxmicroeditionmidletMIDlet class and for aRIMlet that means calling the main()

method of the netrimdeviceapisystemApplication class

MIDP halo

Pada bagian ini Anda akan melihat dasar-dasar bagaimana MIDlets kerja dengan

menciptakan sebuahHello World MIDlet Pada sederhana terdiri dari kelas MIDlet

MIDlet yang merupakan titik peluncuran yang menangani peristiwa siklus hidup MIDlet

dan sebuah tampilan bahwa MIDlet dapat menempatkan pada Tampilan (Tampilan

adalah kelas MIDP sesuai dengan layar perangkat dan tampilan adalah MIDP kelas

untuk objek yang dapat mengisi seluruh layar) DalamituHalo MIDP contoh MIDlet

kelas diberikan pada Listing 2-1 dan tampilan yang diberikan pada Listing 2-2

Kode 2-1 menunjukkan bagaimana sebuah MIDlet menerima peristiwa dari AMS Kelas

menerima hidup MIDlet siklus kegiatan seperti memulai jeda dan pembersihan dengan

menerapkan metode pemberitahuan Sebuah MIDlet menerima input pengguna

terutama melalui perintah yang merupakan kasus javaxmicroeditionlcduiCommand

Perintah biasanya sesuai dengan softkey (label yang digambar di kanan layar di atas

atau di samping tombol fisik yang sebenarnya pada perangkat) atau ke sebuah item

menu Kebanyakan MIDP handset memiliki softkey kiri dan kanan di softkey dasar

layar dan jika Anda menambahkan tepat dua perintah ke tampilan mereka akan

muncul sebagai dua tombol lembut Menambahkan lebih dari dua perintah biasanya

menyebabkan perangkat kelompok perintah (kecuali yang dibuat sebagai jenis

CommandEXIT) dalam menu lembut yang muncul ketika pengguna memilih menu

softkey seperti yang ditunjukkan pada Gambar 2-2

Gambar 2-2 Perintah biasanya muncul sebagai softkeys (kiri) atau dalam menu lunak

(kanan) pada perangkat MIDP khas BlackBerry sedikit berbeda dalam bahwa perintah

selalu ditempatkan dalam menu lunak yang diakses melalui masukan navigasi

(trackwheel atau trackball) seperti yang Anda lihat pada Gambar 2-3

Gambar 2-3 Pada BlackBerry perintah ditempatkan dalam menu

Tentu saja itu alasan yang abstrak MIDP API pilihan input pengguna sebagai Perintah

daripada memiliki MIDlet menetapkan bahwa Komando adalah softkey atau item menu

tersebut platform bisa hadir pilihan untuk pengguna di mana cara yang sesuai platform

yang terbaik Agar Perintah untuk aktif mereka perlu ditambahkan ke tampilan dan

bahwa Tampilan harus menjadi orang yang saat ini ditetapkan pada Tampilan (lihat

konstruktor dan startApp () method pada Listing 2-1) Bukannya membiarkan masing

masing Komando untuk menerima sendiri kejadian atau memiliki pendengar yang

terpisah untuk setiap Komando satu CommandListener menerima commandAction ()

pemberitahuan untuk semua Perintah pada tampilan Dalam Hello contoh MIDP yang

ditampilkan adalah kelas dari javaxmicroeditionlcduiCanvas diberikan pada Listing 2

2

Kode 2-2 HelloCanvasjava

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 2: BB Bab 6 Edit (Autosaved)

Gambar 2-1 Komponen-komponen dari platform Java BlackBerry

Kebanyakan smartphone BlackBerry mengimplementasikan MIDP 20 di atas CLDC

11 yang merupakan versi yang paling umum ditemukan di) handset MIDP Beberapa

perangkat BlackBerry awal diimplementasikan MIDP 10 tetapi mereka jarang dan

tidak kompatibel dengan RIM Java pengembangan alat Ada juga versi ketiga dari

MIDP yang telah di) JCP untuk tahun dan akhirnya melewati persetujuan akhirnya

suara pada bulan November tahun 2009 BlackBerry akhirnya dapat mendukung

platform MIDP 3 versi 3 (JSR 271) Tapi MIDP sejak 3 sebagian besar berkaitan

dengan hal-hal seperti konkurensi aplikasi dan berbagi perpustakaan (yang RIM

platform sudah menangani dengan cara sendiri milik perusahaan) dan sejak RIM

berpartisipasi pada JSR 271 pada tim spesifikasi pergeseran untuk MIDP 3 harus

relatif tanpa rasa sakit jika dan ketika tiba smartphone BlackBerry juga biasanya

memiliki beberapa standar tersedia opsional API seperti Wireless Messaging API (JSR

120) dan Personal Manajemen Informasi API (JSR 75)

Sebenarnya MIDP CLDC dan bahkan Java ME sendiri semua didefinisikan dalam

JSRs yang tersedia untuk di-download di situs web JCP (httpjcporg) Ini adalah ide

yang bagus untuk Java ME pengembang untuk menjadi akrab dengan situs web JCP

karena spesifikasi JSR mendefinisikan permainan apa yang da pat Anda lakukan pada

handset tertentu Tidak seperti Standar dan Enterprise Edition pemrograman Java di

Java ME Anda harus menghadapi kenyataan bahwa perangkat yang berbeda telah set

berbeda API tersedia untuk Anda gunakan dan untuk perangkat paling set yang

tersedia API tidak dapat diubah Entah produsen perangkat menerapkan JSR diberikan

atau fungsi yang terkait tersebut tidak tersedia pada perangkat tersebut Dalam kasus

BlackBerry Anda dapat melihat secara tepat yang diimplementasikan JSRs yang model

ini video berguna pada BlackBerry pengembang situs

wwwblackberrycomDevMediaLibraryviewdoname=JSRSupport

(Halaman-halaman dari situs pengembang tampaknya untuk bergerak dengan frekuensi

tertentu sehingga jika video tidak saat ini di URL di atas Anda mungkin dapat

menemukannya dengan melihat ke sekeliling) Situasi dengan BlackBerry sedikit

berbeda karena mungkin untuk meningkatkan sistem operasi (dan akibatnya API Java)

pada BlackBerry Namun sebagian besar pengguna BlackBerry tidak akan meng

upgrade sistem operasi sehingga dalam praktiknya Anda harus menghadapi dengan

mendukung berbagai API yang berbeda ----- Java bahkan jika smartphone BlackBerry

adalah Anda hanya target platform

Bagaimana Aplikasi Java BlackBerry Pekerjaan

Perangkat lunak yang bertanggung Javab untuk menginstal aplikasi Java dan

menjalankan disebut aplikasi manajemen sistem (AMS) AMS meluncurkan aplikasi dan

pengguna melewati masukan bersama untuk aplikasi dengan memanggil fungsi yang

sesuai Untuk MIDlet itu berarti memanggil startApp() method of the

javaxmicroeditionmidletMIDlet class and for aRIMlet that means calling the main()

method of the netrimdeviceapisystemApplication class

MIDP halo

Pada bagian ini Anda akan melihat dasar-dasar bagaimana MIDlets kerja dengan

menciptakan sebuahHello World MIDlet Pada sederhana terdiri dari kelas MIDlet

MIDlet yang merupakan titik peluncuran yang menangani peristiwa siklus hidup MIDlet

dan sebuah tampilan bahwa MIDlet dapat menempatkan pada Tampilan (Tampilan

adalah kelas MIDP sesuai dengan layar perangkat dan tampilan adalah MIDP kelas

untuk objek yang dapat mengisi seluruh layar) DalamituHalo MIDP contoh MIDlet

kelas diberikan pada Listing 2-1 dan tampilan yang diberikan pada Listing 2-2

Kode 2-1 menunjukkan bagaimana sebuah MIDlet menerima peristiwa dari AMS Kelas

menerima hidup MIDlet siklus kegiatan seperti memulai jeda dan pembersihan dengan

menerapkan metode pemberitahuan Sebuah MIDlet menerima input pengguna

terutama melalui perintah yang merupakan kasus javaxmicroeditionlcduiCommand

Perintah biasanya sesuai dengan softkey (label yang digambar di kanan layar di atas

atau di samping tombol fisik yang sebenarnya pada perangkat) atau ke sebuah item

menu Kebanyakan MIDP handset memiliki softkey kiri dan kanan di softkey dasar

layar dan jika Anda menambahkan tepat dua perintah ke tampilan mereka akan

muncul sebagai dua tombol lembut Menambahkan lebih dari dua perintah biasanya

menyebabkan perangkat kelompok perintah (kecuali yang dibuat sebagai jenis

CommandEXIT) dalam menu lembut yang muncul ketika pengguna memilih menu

softkey seperti yang ditunjukkan pada Gambar 2-2

Gambar 2-2 Perintah biasanya muncul sebagai softkeys (kiri) atau dalam menu lunak

(kanan) pada perangkat MIDP khas BlackBerry sedikit berbeda dalam bahwa perintah

selalu ditempatkan dalam menu lunak yang diakses melalui masukan navigasi

(trackwheel atau trackball) seperti yang Anda lihat pada Gambar 2-3

Gambar 2-3 Pada BlackBerry perintah ditempatkan dalam menu

Tentu saja itu alasan yang abstrak MIDP API pilihan input pengguna sebagai Perintah

daripada memiliki MIDlet menetapkan bahwa Komando adalah softkey atau item menu

tersebut platform bisa hadir pilihan untuk pengguna di mana cara yang sesuai platform

yang terbaik Agar Perintah untuk aktif mereka perlu ditambahkan ke tampilan dan

bahwa Tampilan harus menjadi orang yang saat ini ditetapkan pada Tampilan (lihat

konstruktor dan startApp () method pada Listing 2-1) Bukannya membiarkan masing

masing Komando untuk menerima sendiri kejadian atau memiliki pendengar yang

terpisah untuk setiap Komando satu CommandListener menerima commandAction ()

pemberitahuan untuk semua Perintah pada tampilan Dalam Hello contoh MIDP yang

ditampilkan adalah kelas dari javaxmicroeditionlcduiCanvas diberikan pada Listing 2

2

Kode 2-2 HelloCanvasjava

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 3: BB Bab 6 Edit (Autosaved)

Sebenarnya MIDP CLDC dan bahkan Java ME sendiri semua didefinisikan dalam

JSRs yang tersedia untuk di-download di situs web JCP (httpjcporg) Ini adalah ide

yang bagus untuk Java ME pengembang untuk menjadi akrab dengan situs web JCP

karena spesifikasi JSR mendefinisikan permainan apa yang da pat Anda lakukan pada

handset tertentu Tidak seperti Standar dan Enterprise Edition pemrograman Java di

Java ME Anda harus menghadapi kenyataan bahwa perangkat yang berbeda telah set

berbeda API tersedia untuk Anda gunakan dan untuk perangkat paling set yang

tersedia API tidak dapat diubah Entah produsen perangkat menerapkan JSR diberikan

atau fungsi yang terkait tersebut tidak tersedia pada perangkat tersebut Dalam kasus

BlackBerry Anda dapat melihat secara tepat yang diimplementasikan JSRs yang model

ini video berguna pada BlackBerry pengembang situs

wwwblackberrycomDevMediaLibraryviewdoname=JSRSupport

(Halaman-halaman dari situs pengembang tampaknya untuk bergerak dengan frekuensi

tertentu sehingga jika video tidak saat ini di URL di atas Anda mungkin dapat

menemukannya dengan melihat ke sekeliling) Situasi dengan BlackBerry sedikit

berbeda karena mungkin untuk meningkatkan sistem operasi (dan akibatnya API Java)

pada BlackBerry Namun sebagian besar pengguna BlackBerry tidak akan meng

upgrade sistem operasi sehingga dalam praktiknya Anda harus menghadapi dengan

mendukung berbagai API yang berbeda ----- Java bahkan jika smartphone BlackBerry

adalah Anda hanya target platform

Bagaimana Aplikasi Java BlackBerry Pekerjaan

Perangkat lunak yang bertanggung Javab untuk menginstal aplikasi Java dan

menjalankan disebut aplikasi manajemen sistem (AMS) AMS meluncurkan aplikasi dan

pengguna melewati masukan bersama untuk aplikasi dengan memanggil fungsi yang

sesuai Untuk MIDlet itu berarti memanggil startApp() method of the

javaxmicroeditionmidletMIDlet class and for aRIMlet that means calling the main()

method of the netrimdeviceapisystemApplication class

MIDP halo

Pada bagian ini Anda akan melihat dasar-dasar bagaimana MIDlets kerja dengan

menciptakan sebuahHello World MIDlet Pada sederhana terdiri dari kelas MIDlet

MIDlet yang merupakan titik peluncuran yang menangani peristiwa siklus hidup MIDlet

dan sebuah tampilan bahwa MIDlet dapat menempatkan pada Tampilan (Tampilan

adalah kelas MIDP sesuai dengan layar perangkat dan tampilan adalah MIDP kelas

untuk objek yang dapat mengisi seluruh layar) DalamituHalo MIDP contoh MIDlet

kelas diberikan pada Listing 2-1 dan tampilan yang diberikan pada Listing 2-2

Kode 2-1 menunjukkan bagaimana sebuah MIDlet menerima peristiwa dari AMS Kelas

menerima hidup MIDlet siklus kegiatan seperti memulai jeda dan pembersihan dengan

menerapkan metode pemberitahuan Sebuah MIDlet menerima input pengguna

terutama melalui perintah yang merupakan kasus javaxmicroeditionlcduiCommand

Perintah biasanya sesuai dengan softkey (label yang digambar di kanan layar di atas

atau di samping tombol fisik yang sebenarnya pada perangkat) atau ke sebuah item

menu Kebanyakan MIDP handset memiliki softkey kiri dan kanan di softkey dasar

layar dan jika Anda menambahkan tepat dua perintah ke tampilan mereka akan

muncul sebagai dua tombol lembut Menambahkan lebih dari dua perintah biasanya

menyebabkan perangkat kelompok perintah (kecuali yang dibuat sebagai jenis

CommandEXIT) dalam menu lembut yang muncul ketika pengguna memilih menu

softkey seperti yang ditunjukkan pada Gambar 2-2

Gambar 2-2 Perintah biasanya muncul sebagai softkeys (kiri) atau dalam menu lunak

(kanan) pada perangkat MIDP khas BlackBerry sedikit berbeda dalam bahwa perintah

selalu ditempatkan dalam menu lunak yang diakses melalui masukan navigasi

(trackwheel atau trackball) seperti yang Anda lihat pada Gambar 2-3

Gambar 2-3 Pada BlackBerry perintah ditempatkan dalam menu

Tentu saja itu alasan yang abstrak MIDP API pilihan input pengguna sebagai Perintah

daripada memiliki MIDlet menetapkan bahwa Komando adalah softkey atau item menu

tersebut platform bisa hadir pilihan untuk pengguna di mana cara yang sesuai platform

yang terbaik Agar Perintah untuk aktif mereka perlu ditambahkan ke tampilan dan

bahwa Tampilan harus menjadi orang yang saat ini ditetapkan pada Tampilan (lihat

konstruktor dan startApp () method pada Listing 2-1) Bukannya membiarkan masing

masing Komando untuk menerima sendiri kejadian atau memiliki pendengar yang

terpisah untuk setiap Komando satu CommandListener menerima commandAction ()

pemberitahuan untuk semua Perintah pada tampilan Dalam Hello contoh MIDP yang

ditampilkan adalah kelas dari javaxmicroeditionlcduiCanvas diberikan pada Listing 2

2

Kode 2-2 HelloCanvasjava

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 4: BB Bab 6 Edit (Autosaved)

MIDlet yang merupakan titik peluncuran yang menangani peristiwa siklus hidup MIDlet

dan sebuah tampilan bahwa MIDlet dapat menempatkan pada Tampilan (Tampilan

adalah kelas MIDP sesuai dengan layar perangkat dan tampilan adalah MIDP kelas

untuk objek yang dapat mengisi seluruh layar) DalamituHalo MIDP contoh MIDlet

kelas diberikan pada Listing 2-1 dan tampilan yang diberikan pada Listing 2-2

Kode 2-1 menunjukkan bagaimana sebuah MIDlet menerima peristiwa dari AMS Kelas

menerima hidup MIDlet siklus kegiatan seperti memulai jeda dan pembersihan dengan

menerapkan metode pemberitahuan Sebuah MIDlet menerima input pengguna

terutama melalui perintah yang merupakan kasus javaxmicroeditionlcduiCommand

Perintah biasanya sesuai dengan softkey (label yang digambar di kanan layar di atas

atau di samping tombol fisik yang sebenarnya pada perangkat) atau ke sebuah item

menu Kebanyakan MIDP handset memiliki softkey kiri dan kanan di softkey dasar

layar dan jika Anda menambahkan tepat dua perintah ke tampilan mereka akan

muncul sebagai dua tombol lembut Menambahkan lebih dari dua perintah biasanya

menyebabkan perangkat kelompok perintah (kecuali yang dibuat sebagai jenis

CommandEXIT) dalam menu lembut yang muncul ketika pengguna memilih menu

softkey seperti yang ditunjukkan pada Gambar 2-2

Gambar 2-2 Perintah biasanya muncul sebagai softkeys (kiri) atau dalam menu lunak

(kanan) pada perangkat MIDP khas BlackBerry sedikit berbeda dalam bahwa perintah

selalu ditempatkan dalam menu lunak yang diakses melalui masukan navigasi

(trackwheel atau trackball) seperti yang Anda lihat pada Gambar 2-3

Gambar 2-3 Pada BlackBerry perintah ditempatkan dalam menu

Tentu saja itu alasan yang abstrak MIDP API pilihan input pengguna sebagai Perintah

daripada memiliki MIDlet menetapkan bahwa Komando adalah softkey atau item menu

tersebut platform bisa hadir pilihan untuk pengguna di mana cara yang sesuai platform

yang terbaik Agar Perintah untuk aktif mereka perlu ditambahkan ke tampilan dan

bahwa Tampilan harus menjadi orang yang saat ini ditetapkan pada Tampilan (lihat

konstruktor dan startApp () method pada Listing 2-1) Bukannya membiarkan masing

masing Komando untuk menerima sendiri kejadian atau memiliki pendengar yang

terpisah untuk setiap Komando satu CommandListener menerima commandAction ()

pemberitahuan untuk semua Perintah pada tampilan Dalam Hello contoh MIDP yang

ditampilkan adalah kelas dari javaxmicroeditionlcduiCanvas diberikan pada Listing 2

2

Kode 2-2 HelloCanvasjava

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 5: BB Bab 6 Edit (Autosaved)

Kode 2-1 menunjukkan bagaimana sebuah MIDlet menerima peristiwa dari AMS Kelas

menerima hidup MIDlet siklus kegiatan seperti memulai jeda dan pembersihan dengan

menerapkan metode pemberitahuan Sebuah MIDlet menerima input pengguna

terutama melalui perintah yang merupakan kasus javaxmicroeditionlcduiCommand

Perintah biasanya sesuai dengan softkey (label yang digambar di kanan layar di atas

atau di samping tombol fisik yang sebenarnya pada perangkat) atau ke sebuah item

menu Kebanyakan MIDP handset memiliki softkey kiri dan kanan di softkey dasar

layar dan jika Anda menambahkan tepat dua perintah ke tampilan mereka akan

muncul sebagai dua tombol lembut Menambahkan lebih dari dua perintah biasanya

menyebabkan perangkat kelompok perintah (kecuali yang dibuat sebagai jenis

CommandEXIT) dalam menu lembut yang muncul ketika pengguna memilih menu

softkey seperti yang ditunjukkan pada Gambar 2-2

Gambar 2-2 Perintah biasanya muncul sebagai softkeys (kiri) atau dalam menu lunak

(kanan) pada perangkat MIDP khas BlackBerry sedikit berbeda dalam bahwa perintah

selalu ditempatkan dalam menu lunak yang diakses melalui masukan navigasi

(trackwheel atau trackball) seperti yang Anda lihat pada Gambar 2-3

Gambar 2-3 Pada BlackBerry perintah ditempatkan dalam menu

Tentu saja itu alasan yang abstrak MIDP API pilihan input pengguna sebagai Perintah

daripada memiliki MIDlet menetapkan bahwa Komando adalah softkey atau item menu

tersebut platform bisa hadir pilihan untuk pengguna di mana cara yang sesuai platform

yang terbaik Agar Perintah untuk aktif mereka perlu ditambahkan ke tampilan dan

bahwa Tampilan harus menjadi orang yang saat ini ditetapkan pada Tampilan (lihat

konstruktor dan startApp () method pada Listing 2-1) Bukannya membiarkan masing

masing Komando untuk menerima sendiri kejadian atau memiliki pendengar yang

terpisah untuk setiap Komando satu CommandListener menerima commandAction ()

pemberitahuan untuk semua Perintah pada tampilan Dalam Hello contoh MIDP yang

ditampilkan adalah kelas dari javaxmicroeditionlcduiCanvas diberikan pada Listing 2

2

Kode 2-2 HelloCanvasjava

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 6: BB Bab 6 Edit (Autosaved)

Gambar 2-3 Pada BlackBerry perintah ditempatkan dalam menu

Tentu saja itu alasan yang abstrak MIDP API pilihan input pengguna sebagai Perintah

daripada memiliki MIDlet menetapkan bahwa Komando adalah softkey atau item menu

tersebut platform bisa hadir pilihan untuk pengguna di mana cara yang sesuai platform

yang terbaik Agar Perintah untuk aktif mereka perlu ditambahkan ke tampilan dan

bahwa Tampilan harus menjadi orang yang saat ini ditetapkan pada Tampilan (lihat

konstruktor dan startApp () method pada Listing 2-1) Bukannya membiarkan masing

masing Komando untuk menerima sendiri kejadian atau memiliki pendengar yang

terpisah untuk setiap Komando satu CommandListener menerima commandAction ()

pemberitahuan untuk semua Perintah pada tampilan Dalam Hello contoh MIDP yang

ditampilkan adalah kelas dari javaxmicroeditionlcduiCanvas diberikan pada Listing 2

2

Kode 2-2 HelloCanvasjava

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 7: BB Bab 6 Edit (Autosaved)

Kelas HelloCanvas mengilustrasikan teknik untuk menggambar pada layar yang akan

Anda gunakan terlepas dari apakah aplikasi Anda adalah MIDlet atau RIMlet Anda

memiliki sebuah metode yang Anda gunakan untuk memberitahu platform bahwa Anda

siap untuk memperbarui tampilan (mengecat () dalam kasus) dan kemudian ketika

AMS siap itu panggilan cat () dengan objek yang dapat Grafis digunakan untuk

menggambar Anda akan melihat beberapa variasi ----- Anda mungkin cat menjadi

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 8: BB Bab 6 Edit (Autosaved)

gambar bitmap bukannya langsung ke layar perangkat misalnya dan RIM

menggunakan API implementasi yang berbeda dari kelas Graphics

(netrimdeviceapiuiGraphics bukannya javaxmicroeditionlcduiGraphics )---- tapi ide

dasar ini tidak mengubah

Halo BlackBerry

Pada bagian ini Anda akan melihat dasar-dasar bagaimana RIMlets bekerja dengan

menciptakan sebuahRIMlet Hello World

Catatan Istilah RIMletadalah nama informal yang akan Anda lihat dalam diskusi di

Internet tapi tidak muncul di dokumentasi resmi RIM Seperti yang akan Anda lihat

dalam bagian pada pengumpulan dan membangun aplikasi Anda RIM menggunakan

aplikasi CLDC istilahuntuk aplikasi BlackBerry yang tidak MIDlet Pilihan ini istilah

membingungkan karena MIDlet juga merupakan jenis Aplikasi CLDC Sejak API milik

RIM mendefinisikan siklus hidup aplikasi mereka bertindak seperti profil alternatif

sehingga namaRIMlet menekankan paralel dan masuk akal lebih banyak Aku

mengasumsikan bahwa istilahRIMlet adalah korban dari salah satu bahaya biasa

membuat nama-nama makna alternatif (misalnya RIM mendongak RIMletdi Urban

Dictionary dan memutuskan tidak sesuai) Meskipun demikian karena istilahaplikasi

CLDC adalah ambigu dalam buku ini saya akan menggunakan istilahRIMletuntuk

aplikasi BlackBerry CLDC yang tidak MIDlet Sebuah RIMlet memiliki dua blok

bangunan dasar yang sama sebagai MIDlet yaitu siklus hidup utama kelas (Kode 2-3)

dan kelas yang mendefinisikan apa yang muncul di layar (Kode 2-4) Namun ada

beberapa perbedaan yang menarik pada dasarnya karena fakta bahwa smartphone

BlackBerry dapat menjalankan beberapa aplikasi secara bersamaan Menjalankan

beberapa aplikasi secara bersamaan tidak dilarang dalam MIDP tapi karena MIDP

perangkat biasanya tidak mampu melakukan itu tingkah laku yang tepat tidak

ditentukan sebelum MIDP 3 Pada BlackBerry Anda dapat menentukan bahwa aplikasi

Anda adalah dengan menjalankan di latar belakang dan Anda bahkan dapat

menentukan bahwa itu akan diluncurkan saat perangkat diaktifkan dan harus berjalan

di latar belakang sepanjang waktu Jadi komponen tampilan layar tidak teknis yang

diperlukan Sejak permainan biasanya tidak berjalan di latar belakang kita tidak akan

menghabiskan banyak waktu pada aplikasi yang tidak menggunakan layar Perbedaan

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 9: BB Bab 6 Edit (Autosaved)

besar lainnya adalah bahwa platform BlackBerry memiliki layar dibangun pada stack

memungkinkan pengguna untuk pergi ke layar sebelumnya hanya dengan menekan

tombol kembali The RIM API adalah mengatur sehingga Anda dapat mengikuti pola

desain yang sama mendorong dan popping Anda layar pada stack Ini adalah salah

satu titik di mana API RIM meningkatkan pada desain MIDP Sebuah antarmuka

pengguna biasanya melibatkan setumpuk layar tapi karena MIDP tidak memiliki

dukungan built-in untuk menumpuk layar (di luar BlackBerry) iklan Anda hoc

pelaksanaan layar stack tidak akan terintegrasi dengan baik dengan perangkat standar

navigasi gaya

Kode 2-3 HelloBlackBerryjava

Setelah membaca properti 2-3 dua pertanyaan harus melompat keluar pada AndaApa

acara dispatcherdanBagaimana cara mengakhiri aplikasi Para operator acara

adalah benang yang menggunakan platform aplikasi untuk memberitahu pengguna

masukan acara dan memperbarui layar tersebut Meskipun sebuah smartphone

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 10: BB Bab 6 Edit (Autosaved)

BlackBerry dapat menjalankan beberapa aplikasi pada saat yang sama hanya satu

layar yang di bagian atas layar stack dan itulah layar yang menerima peristiwa input

Calling enterEventDispatcher () set benang operator acara untuk mulai mengirim

kejadian di layar bahwa aplikasi ini telah mendorong ke atas tumpukan Jika Anda

memiliki pengalaman pemrograman di Java threading harus akrab bagi Anda Tapi jika

tidak metafora dari sebuahthread(atau string) bekerja dengan baik Hanya gambar

lewat thread melalui kode tersebut membuat panggilan yang berbeda dalam metode

Ketika salah satu metode panggilan lain perintah benang melewati ke metode baru

dan kembali kalau sudah dilakukan Anda dapat melihat bahwa dua benang potensial

dapat bekerja dengan cara mereka melalui metode yang sama secara simultan

sebagai contoh Setiap urutan perintah yang diluncurkan oleh platform memanggil

metode seperti sebagai keyChar () berjalan di thread event (sedangkan metode

menelepon dari dalam menjalankan () metode thread yang Anda dirikan diri Anda tidak

akan) Jika Anda tidak yakin Anda dapat selalu panggilan ApplicationisEventThread

() Catatan enterEventDispatcher () metode biasanya tidak kembali karena benang

yang memanggil metode ini menjadi event-dispatching thread Sejak aplikasi berakhir

dengan panggilan untuk Systemexit ()---- yang berakhir program yang benar-benar ----

enterEventDispatcher () metode ini belum pernah kembali untuk melengkapi metode

yang memanggilnya Jadi setiap pembersihan menit-menit terakhir harus dilakukan

sebelum memanggil Systemexit () API user interface RIM mengikuti filsafat Java

Swing melaksanakan semua pengguna update interface di thread acara bukan

merancang komponen user interface menjadi thread aman komponen MIDP bekerja

dalam cara yang sama ---- Anda mungkin dapat untuk mengakses komponen GUI

MIDP dari benang secara bersamaan tetapi Anda tidak perlu Dalam kedua kasus

platform menggunakan thread acara ketika meluncurkan aplikasi dan saat memanggil

metode yang memberitahukan aplikasi dari masukan pengguna Jadi selama Anda

tidakmenciptakan thread baru sendiri semua kode layar-update Anda (semua kode

Anda sebenarnya) akan berjalan di thread event Anda tidak bisa hanya selalu

menggunakan thread acara untuk segala sesuatu meskipun ---- jika panggilan pada

kejadian thread tidak kembali dengan cepat perangkat dapat membekukan dan

kecelakaan Jadi Anda harus membuat thread baru saat melakukan perhitungan yang

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 11: BB Bab 6 Edit (Autosaved)

membutuhkan waktu yang lama untuk acara ulang bahwa dijadwalkan oleh timer

(seperti yang akan Anda lihat dalam Bab 9) dan untuk metode yang menghalangi

seperti kode komunikasi (seperti yang akan Anda lihat di Bab 7 dan 9) Bila

menggunakan thread sendiri (tidak benang acara) Java ME platform dirancang untuk

memudahkan untuk mendelegasikan menampilkan update ke thread event Anda hanya

panggilan tidak sah () pada komponen RIM atau mengecat () pada komponen MIDP

untuk antrian permintaan untuk memperbarui layar dan platform akan menelepon

cat () method dari benang acara untuk melaksanakannya Jika itu tidak cukup dan

Anda telah membuat sebuah metode yang perlu dijalankan pada kejadian

thread (yang akan disinkronisasi dengan update layar) maka Anda dapat

menggunakan DisplaycallSerially () (dari MIDlet) atau ApplicationinvokeLater () (dari

RIMlet) Anda akan melihat bagaimana menggunakan ApplicationinvokeLater () dalam

Bab 5 serta lebih rinci contoh bagaimana menggunakan benang dengan

ApplicationinvokeAndWait () untuk memperbarui animasi permainan game Andrew

Saber berayun dari Bab 6 The Halo BlackBerry aplikasi berakhir dengan sebuah

panggilan ke Systemexit () seperti terlihat pada Listing 2-4 Biasanya Anda lakukan ini

secepat layar aplikasi terakhir telah muncul dari stack Sejak Hello BlackBerry contoh

program hanya memiliki satu layar kita memiliki akhir program itu sendiri segera

setelah acara memberitahu operator layar yang telah tertutup (dgn kata lain muncul

dari layar stack) Dalam aplikasi yang lebih kompleks saya suka ke tempat yang

Systemexit () memanggil metode di kelas UiApplication untuk menjaga kehidupan

logika siklus dikelompokkan tetapi karena Anda dapat melihat dari contoh ini dapat

ditempatkan di manapun Sebenarnya itu bahkan tidak teknis yang diperlukan untuk

memanggil Systemexit () diri sejak perilaku standar platform ketika menutup layar

terakhir pada layar stack adalah untuk panggilan Systemexit () Jadi jika panggilan ke

super () pada Listing 2-4 digantikan oleh panggilan super (DEFAULT_CLOSE) maka

onClose dengan () metode dapat dihapus dari kelas ini tanpa mempengaruhi perilaku

Tapi saya rasa itu bermanfaat untuk melacak aplikasi siklus hidup secara eksplisit

sehingga tidak ada kebingungan tentang apa yang dilakukannya di belakang layar

Perhatian Platform tidak BlackBerry meluncurkan aplikasi Anda dalam virtual terpisah

mesin yang berarti bahwa Anda harus sangat berhati-hati tentang pembersihan Sisa

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 12: BB Bab 6 Edit (Autosaved)

sisa sebelumnya jalankan (seperti variabel statis dan data lainnya masih dalam memori)

secara potensial dapat mempengaruhi kemudian menjalankan aplikasi Ini juga berarti

bahwa ada namespace global sehingga jika dua kelas nama yang sama kesalahan

dapat muncul Tentu saja Anda masih perlu tahu bagaimana mendapatkan layar

muncul dari layar stack Itu platform BlackBerry otomatis tempat pilihan Close pada

menu dan menangani nya pelaksanaan (untuk menutup layar dan pop itu dari layar

stack) Listing 2-4 menunjukkan bagaimana Anda dapat menambah item Anda sendiri

ke menu juga dengan menu utama layar ini metode penciptaan makeMenu ()

Berbeda dengan objek javaxmicroeditionlcduiCommand di Kode 2-1

netrimdeviceapiuiMenuItem merupakan implementasi dari Runnable yang

menangani perintah sendiri tindakan dalam menjalankan perusahaan () metode (yang

platform panggilan saat pengguna memilih MENUITEM) Itu berarti bahwa Anda harus

menerapkan subclass terpisah untuk setiap MENUITEM untuk menentukan

tindakannya Anda dapat melakukannya hanya dengan anonim batin kelas seperti

yang Anda lihat dalam pelaksanaan myToggleHelloItem pada Listing 2-4

Kode 2-4 HelloWorldScreenjava

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 13: BB Bab 6 Edit (Autosaved)

The ResourceBundle kelas dan interface HelloBBResResource (yang

HelloWorldScreen

menerapkan) merupakan bagian dari RIM built-in fungsi internasionalisasi Ini adalah

satu lagi jalur mana RIM meningkatkan pada MIDP Masuk akal untuk internasionalisasi

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 14: BB Bab 6 Edit (Autosaved)

aplikasi Anda sejak awal tapi tidak dibangun ke MIDP Jadi dalam MIDP Anda harus

baik menciptakan roda ----- menerapkan cara Anda sendiri pemetaan berkas data teks

ke bahasa perangkat pilihan ----- atau menggunakan JSR 238 yang sedikit baru

teringat dan karenanya tidak tersedia di banyak platform Untuk BlackBerry RIM

platform Java mendefinisikan format file sumber Anda masukkan dalam Anda

membangun dan secara otomatis menghasilkan sesuai antarmuka bahwa aplikasi

Anda dapat digunakan untuk mengakses sumber daya sebagai dijelaskan dalam

bagian berikut Kemudian perangkat BlackBerry transparan memilih sumber daya

bundel bahasa yang benar pada saat runtime

Kompilasi dan Bangunan Permainan Anda

Sekarang bahwa Anda sudah melihat kode ini mari kita lihat bagaimana membangun

aplikasi dari itu

Menggunakan BlackBerry JDE

Anda dapat mendownload membangun perangkat wajib yang Anda butuhkan dari para

pengembang BlackBerry situs

httpnablackberrycomengdevelopersjavaappdevdevtoolsjsp

Mulailah dengan men-download BlackBerry Java Development Environment (JDE)

Anda akan melihat pilihan berbagai versi JDE yang sesuai dengan versi yang berbeda

dari BlackBerry sistem operasi Saya akan mulai dengan versi mana yang sesuai

dengan perangkat Anda miliki di tangan untuk pengujian pembangunan Sementara

Anda melakukannya Anda juga dapat download simulator tambahan sehingga Anda

dapat melihat aplikasi apa yang Anda terlihat seperti pada model perangkat yang

berbeda Jika Anda tidak mengetahui versi sistem operasi yang diinstal pada perangkat

BlackBerry Anda mudah untuk mencari tahu Hanya pilih Pilihan 1048778 Tentang dari menu

utama Ini akan memberi Anda layar yang menunjukkan versi sistem operasi serta

sekelompok lainnya yang menarik informasi tentang platform Java yang diinstal pada

perangkat seperti yang ditunjukkan pada Gambar 2-4

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 15: BB Bab 6 Edit (Autosaved)

Gambar 2-4 Layar Tentang memberikan informasi tentang sistem operasi dan platform

Java yang diinstal pada perangkat BlackBerry) JDE dilengkapi dengan sejumlah alat

yang berguna termasuk perangkat simulator

(Dengan kulit yang mewakili berbagai model BlackBerry) debugger loader Java

program yang memungkinkan Anda untuk menginstal aplikasi Java pada perangkat

melalui port serial atau USB kabel dan tentu mengkompilasi dan membuat perangkat

Semua perangkat tersebut dirancang untuk berjalan pada Windows saja bahkan jika

Anda memilih sistem operasi lain untuk perkembangan Anda lingkungan (seperti yang

saya lakukan) Anda harus menggunakan sistem Windows untuk proyek BlackBerry

Anda Anda juga harus memiliki Java SDK Standard Edition baru-baru ini diinstal pada

mesin Anda yang dapat anda download dari httpjavasuncomBlackBerry JDE

datang dengan installer jadi instalasi mudah Setelah terinstal

Anda dapat menjalankan JDE dari menu Start Windows Untuk instalasi khas

mengatakan

JDE 410 perintah memulai ditemukan di bawah 1048778 Start All Programs 1048778 Research In

Motion BlackBerry JDE 410 1048778 1048778 JDE Dalam JDE Anda bisa membangun dan

menjalankan sampel

program yang datang dengan JDE dengan memilih File 1048778 Buka Workspace dan

kemudian

browsing untuk memilih sampel ruang kerja yang biasanya akan ditemukan di C

Program

Files Research In Motion BlackBerry JDE 410 sampel samplesjdw Kemudian

Anda dapat

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 16: BB Bab 6 Edit (Autosaved)

pilih Build 1048778 Build Semua dan Jalankan untuk membangun semua program sampel dan

mencobanya pada

simulator Demikian pula Anda dapat membangun dan menjalankan dua aplikasi Hello

World dari ini

bab dengan mendownload source code dari situs web Apress (wwwapresscom) dan

kemudian membuka file chapter02jdw ruang kerja dalam folder chapter02jde Gambar

2-5

menunjukkan seperti apa

Gambar 2-5 Halo BlackBerry berjalan di BlackBerry JDE dan simulator

Sangat mudah untuk menciptakan sebuah proyek yang lengkap dari awal dari dalam

BlackBerry JDE Hanya

menutup ruang kerja terbuka (jika ada) kemudian pilih File 1048778 New Workspace

Kemudian membuat

proyek dalam ruang kerja dengan memilih Proyek 1048778 Buat Proyek Baru JDE

mendefinisikan

ruang kerja dan konfigurasi proyek dengan membuat file JDW untuk setiap ruang kerja

dan sebuah JDP file untuk setiap proyek di dalam ruang kerja Kedua hal ini pendek

sederhana teks

file sehingga Anda dapat membukanya dan melihat apa informasi JDE kebutuhan

untuk memiliki

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 17: BB Bab 6 Edit (Autosaved)

dalam rangka untuk membangun proyek Anda

The JDW dan menyimpan file JDP sifat yang didefinisikan untuk sebuah ruang kerja

yang diberikan atau

proyek Untuk mengedit properti tempat kerja dalam JDE klik kanan file di ruang kerja

explorer pohon di sisi kiri dan kemudian pilih Properties dari file workspaces

menu konteks Demikian pula setiap proyek telah menetapkan sendiri sifat yang dapat

diedit di

dengan cara yang sama Misalnya Anda dapat mengatur proyek yang akan dikompilasi

sebagai MIDlet dengan memilih

MIDlet sebagai Tipe Proyek pada tab Aplikasi jendela Properties proyek

Sejak BlackBerry JDE berperilaku seperti IDE biasa menciptakan (atau menambah)

sumber Java

file code intuitif Proyek 1048778 cukup pilih Create New File di Proyek dan kemudian pastikan

bahwa

ekstensi file baru Anda adalah java Menambahkan ikon aplikasi (yang akan muncul di

menu BlackBerry) adalah hampir sama sederhana Proyek hanya memilih 1048778 Tambah

File untuk Proyek dan

browse untuk memilih file gambar icon Setelah gambar telah ditambahkan ke proyek

klik kanan file gambar di pohon explorer JDE untuk mengedit properti foto Sana

Anda akan memiliki pilihan untuk pengaturan gambar menjadi ikon aplikasi

(LihatMenciptakan

Image File Icon sidebaruntuk informasi lebih lanjut tentang cara membuat ikon)

Menciptakan sumber daya

file adalah langkah yang memerlukan informasi tambahan sedikit seperti yang

dijelaskan di bagian selanjutnya

MENCIPTAKAN BERKAS IMAGE ICON

Gateway untuk permainan Anda adalah ikon yang muncul pada menu BlackBerry (lihat

Gambar 2-6) jadi

penting untuk gambar ini menjadi menarik dan memikat Idealnya gambar ini (dan

semua permainan grafis Anda)akan dibuat oleh seorang desainer grafis profesional

Tapi Anda masih perlu memahami apa jenis gambar file perlu dibuat-jika Anda tidak

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 18: BB Bab 6 Edit (Autosaved)

tinggal di dunia yang ideal atau untuk menjelaskan kepada desainer grafis Anda apa

file yang Anda butuhkan jika Anda

Gambar 2-6 Menu utama simulator 7290 BlackBerry dengan ikon BB Hello

BlackBerry mendukung gambar GIF dan JPEG-dikodekan di samping gambar PNG-

encoded Selama ini

buku kita akan tetap dengan gambar PNG-dikodekan karena PNG adalah format

standar untuk perangkat MIDP Setiap layak

program grafis (misalnya bukan aksesori Paint yang datang dengan Windows) akan

memberikan pilihanmenyimpan gambar Anda dalam format PNG biasanya hanya

dengan menamai file dengan ekstensi file png Jika Anda

tidak memiliki program grafis yang baik Anda dapat men-download GIMP dari

wwwgimporg gratis Its a fullfeatured

program grafis yang memiliki semua Anda harus membuat file grafis untuk permainan

khas

Perangkat BlackBerry yang berbeda menampilkan ikon yang berbeda-ukuran pada

menu aplikasi Kebanyakan model BlackBerry

akan mengubah ukuran ikon untuk Anda jika ukuran salah tapi akan terlihat baik jika

Anda membangun permainan dengan rightsize

ikon Itu berarti membuat serangkaian ikon dalam berbagai ukuran sesuai dengan

perangkat yang berbeda

model (lihat berikut Bangunan untuk Multiple Perangkat dengan Ant bagian untuk

ukuran dan membangun informasi)

Jika Anda membuat ikon diri Anda dengan GIMP Anda mulai dengan menciptakan

sebuah file gambar baru dengan yang diinginkan

dimensi (dalam pixel) Kemudian di Buat Gambar Baru jendela di bawah Advanced

Options pastikan untuk

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 19: BB Bab 6 Edit (Autosaved)

mengubah isi dengan pilihan dari Warna Latar untuk Transparansi Sejak menu

BlackBerry tempat

ikon gambar di atas gambar latar belakang (seperti yang ditunjukkan pada Gambar 2-

7) Anda pasti ingin menggambar ikon Anda

transparan ke latar belakang bukan ke sebuah persegi buram jelek

Gambar 2-7 Ikon yang dicat sebuah gambar pada menu BlackBerry Curve 8320

Untuk ide-ide lebih lanjut tentang cara menggambar ikon Anda lihat 3D Wikipedia

Gambar Trik bagian dalam Bab 4

Membuat File Resource

Dalam rangka untuk memastikan bahwa label permainan dan teks disajikan kepada

pengguna dalam

bahasa yang benar Anda perlu membuat satu set file data peta lokal yang satu set

kunci

konstanta ke set string untuk ditampilkan Untuk membuat berkas sumber daya dan

menghasilkan sumber daya antarmuka yang sesuai alat pembangun BlackBerry

membutuhkan sumber daya header file

(Dengan ekstensi rrh) Dan satu set file sumber daya (dengan ekstensi RRC) satu

untuk masing-masing

dari locales bahwa aplikasi Anda mendukung Ini semua adalah file teks sederhana

yang dapat Anda

ciptakan untuk diri Anda dalam editor teks jika Anda tahu sintaks dan konvensi nama

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 20: BB Bab 6 Edit (Autosaved)

file

Singkatnya file header memberikan informasi berikut

1 Paket untuk antarmuka yang dihasilkan untuk mengakses sumber daya

bundel

2 Lokal default

3 Daftar tombol akses

lokal yang menetapkan bahasa yang diinginkan pengguna dan secara opsional juga

negara pengguna

Ini didefinisikan sesuai dengan konvensi penamaan lokal-Java yang biasa digunakan

oleh

javautilLocale kelas dari Java Standard Edition dan oleh itu microeditionlocale

sistem properti yang dikembalikan oleh SystemgetProperty () dalam MIDP Itu

Format nama lokal ll_CC dimana ll adalah sepasang huruf kecil mengidentifikasi

bahasa dan CC adalah sepasang mengidentifikasi huruf besar negara Sebagai

contoh

en_CA menunjukkan berbicara bahasa Inggris sebagai di Kanada dan id menunjukkan

sumber daya Inggris generik

yang akan digunakan untuk setiap lokal berbahasa Inggris yang Anda belum membuat

countryspecific

sumber daya bundel

BlackBerry Halo sumber daya file kepala diberikan pada Listing 2-5

Kode 2-5 HelloBBResrrh

package netfrogparrothello

originalLocale en

HELLOBB_SAYHELLO0=1

HELLOBB_TOGGLE0=2

Dalam contoh ini Anda dapat melihat bagaimana dua kunci sumber daya yang

dipetakan ke nomor Jika Anda

melihat kembali properti 2-4 Anda dapat melihat bagaimana file sumber daya sesuai

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 21: BB Bab 6 Edit (Autosaved)

bersama dengan sisa

kode Karena saya bernama file HelloBBResrrh BlackBerry membangun sebuah alat

yang dihasilkan

interface bernama HelloBBResResource yang memiliki kunci string

HELLOBB_SAYHELLO

didefinisikan sebagai nama sebuah konstanta Antarmuka ini juga mendefinisikan

konstanta BUNDLE_ID

dan BUNDLE_NAME di mana BUNDLE_ID adalah panjang ditugaskan oleh

membangun alat dan BUNDLE_NAME

adalah nama yang memenuhi syarat (netfrogparrothelloHelloBBRes dalam kasus ini)

Persisnya

nilai-nilai dari dua konstanta tidak penting meskipun ----- hanya perlu diingat bahwa

mereka yang

argumen untuk lolos ke ResourceBundlegetBundle () untuk mendapatkan bundel string

lokal

file sumber data bahkan lebih sederhana daripada sumber daya file header Mereka

hanya

berisi daftar konstanta tombol dipetakan ke string tampilan yang sesuai sebagai

ditampilkan pada Listing 2-6

Listing 2-6 HelloBBRes_enrrc

HELLOBB_SAYHELLO0=Hello World

HELLOBB_TOGGLE0=toggle

Untuk setiap lokal Anda mendukung Anda membuat file data sumber daya yang

sesuai File

memberitahu nama file data platform yang sesuai dengan yang lokal Sebagai contoh

BlackBerry membangun perangkat secara otomatis akan mengidentifikasi

HelloBBRes_frrrc sebagai data Perancis

file sesuai dengan HelloBBResrrh Setiap data file lokal harus berisi daftar

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 22: BB Bab 6 Edit (Autosaved)

string kunci dipetakan ke string diterjemahkan terkait dengan menggunakan sintaks

berikut

KEY0=translated text to display

Bila Anda membuat file sumber daya Anda harus berhati-hati tentang pengkodean

karakter

Sejak handset BlackBerry adalah perangkat MIDP MIDP ---- dan perangkat yang

diperlukan untuk mendukung

karakter UTF-8 encoding ----- Anda harus menggunakan UTF-8 untuk pengkodean teks

semua

bahasa yang memiliki karakter khusus Dan pastikan untuk menguji label lokal pada

perangkat yang sebenarnya karena ternyata ada beberapa masalah dengan karakter

asing

set tidak ditampilkan dengan benar bahkan ketika file data disimpan dalam format UTF-

8

Anda juga dapat menciptakan sumber daya file dalam JDE hanya dengan memilih

Proyek 1048778 Buat Baru

File di Proyek dan kemudian menggunakan konvensi nama file yang benar saat

membuat file

Dalam program contoh BlackBerry Halo saya mulai dengan menciptakan sumber daya

header file

disebut HelloBBResrrh The JDE menyederhanakan proses penciptaan sumber daya

karena

file editor ditetapkan untuk memungkinkan Anda untuk menambahkan tombol baru dan

kunci ditambahkan ke sumber daya

file header secara otomatis disebarkan ke file sumber data sehingga yang harus Anda

lakukan adalah mengisi dalam terjemahan The JDE kemudian membuat file teks yang

benar yang mendasari dalam

format dan encoding karakter di belakang layar

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 23: BB Bab 6 Edit (Autosaved)

Memahami File Aplikasi BlackBerry

Setelah Anda membangun proyek Anda (menggunakan salah satu opsi membangun

proyek di bawah menu) yang

BlackBerry membuat perangkat akan membuat serangkaian file Beberapa file ini

adalah standar MIDP

file dan beberapa BlackBerry spesifik

File JAR (ekstensi jar) Adalah file aplikasi utama untuk MIDP Ini Aumlocircs file

mengandung sumber daya dan dikompilasi file kelas untuk dijalankan pada perangkat

Ini sebuah Aumlocircs

Java standar Arsip file dengan persyaratan menambahkan bahwa file manifest

(METAINF

MANIFESTMF di file JAR) memiliki beberapa sifat MIDP-spesifik khusus

JAD file (ekstensi Jad) adalah Java Application Descriptor file yang digunakan oleh

MIDP Aumlocircs over-the-Air (OTA) provisioning protokol Ini Aumlocircs sebuah properti Java file

yang

berisi informasi tentang aplikasi untuk membantu perangkat (dan pengguna)

memutuskan

apakah untuk melanjutkan dengan download dan instalasi sebelum men-download JAR

yang

file Hal ini memberikan informasi yang berhubungan dengan keamanan seperti

perizinan MIDlet membutuhkan

dan memberikan download dan instalasi informasi seperti ukuran file JAR

dan lokasinya Ini juga memberikan informasi tentang aplikasi seperti nama

ikon dan versi serta nama yang memenuhi syarat dari subclass MIDlet bahwa

AMS harus memanggil untuk memulai MIDlet Sifat aplikasi di file JAD harus

cocok dengan properti terkait dalam file manifest (di JAR) tepat

lain aplikasi menang t menginstal (untuk alasan keamanan)

File RAPC (ekstensi rapc) Adalah file pembantu yang digunakan oleh BlackBerry JDE

dan

BlackBerry kompilasi-dan-membangun alat (rapcexe) Ini berisi banyak hal yang sama

properti yang masuk dalam JAD dan file manifest The BlackBerry JDE menciptakan file

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 24: BB Bab 6 Edit (Autosaved)

ini

(Dengan sifat aplikasi Anda) dan kemudian menggunakannya sebagai masukan untuk

membangun rapcexe

alat yang kemudian menulis sifat ke JAD dan file manifest File ini tidak

diperlukan jika Anda sedang membangun dengan Ant (lihat Gedungdengan Beberapa

Device untuk Ant

bagian yang mengikuti)

File debug (ekstensi debug) Dan file CSO (ekstensi Cso) adalah tambahan helper

file untuk menjalankan aplikasi debugger dan untuk digital menandatangani aplikasi

masing Anda akan menggunakan debug file ketika mengoptimalkan permainan dan

grafis di

Bab 6 dan Anda akan menggunakan file CSO saat menandatangani dan menjual

permainan dalam Bab 5

File ALX (ekstensi ALX) Adalah format XML file descriptor untuk membantu pengguna

menginstal

Anda game lokal menggunakan perangkat lunak manajemen desktop RIM JDE tidak

membuat file ini secara otomatis dengan setiap membangun tetapi itu salah satu menu

pilihan Anda

dapat memilih Anda tidak perlu file ini jika Anda berencana untuk mendistribusikan

game Anda sepenuhnya

melalui udara (memiliki pelanggan Anda menginstal game Anda secara langsung dari

Internet untuk

perangkat BlackBerry mereka) Anda hanya perlu membuat file ini jika anda berencana

untuk menggunakan

model distribusi di mana pelanggan Anda men-download file dari aplikasi Anda

situs ke PC dan kemudian memuat permainan dari PC ke BlackBerry

File COD (ekstensi cod) Adalah file utama aplikasi untuk BlackBerry Ini adalah

file yang Anda gunakan ketika Anda menginstal aplikasi ke perangkat secara langsung

dari Anda

PC dan juga dapat digunakan ketika menginstal aplikasi melalui udara Its a

proprietary format biner sehingga Anda tidak bisa begitu saja memeriksa dan ekstrak

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 25: BB Bab 6 Edit (Autosaved)

isinya jalan

Anda dapat dengan file JAR Anda dapat menginstal game Anda dengan memuat file ini

ke Anda

Perangkat BlackBerry dengan alat JavaLoader (seperti yang akan Anda lihat

dalamInstalasi dan

Mendistribusikan Permainan Andabagian bab ini) atau dengan menciptakan terkait

ALX file untuk digunakan dengan perangkat lunak manajemen desktop file COD

memiliki batas ukuran

(Maksimal 64KB untuk menginstal aplikasi melalui udara) jadi mereka sering

dikelompokkan dalam file ZIP yang (cukup membingungkan) memiliki ekstensi yang

berubah menjadi cod

(ZippingsaudaraCOD file bersama dijelaskan secara lebih rinci dalam Bab 5)

Bangunan untuk Multiple Perangkat dengan Ant

Setelah Anda memahami langkah-langkah dasar untuk menciptakan aplikasi

BlackBerry Anda dapat menempatkan

menghilangkan BlackBerry JDE membangun dan menggunakan alat favorit Baik

Eclipse dan NetBeans

memiliki plug-tersedia untuk membangun untuk BlackBerry in favorit pribadi saya

adalah Ant

Untuk proyek ME Java profesional Ant adalah cara untuk pergi Ini adalah baris

perintah alat pembangun

yang memungkinkan Anda untuk menentukan (dan menggabungkan) membangun

tugas-tugas dalam XML Ant memudahkan

mengotomatisasi Anda membangun dan khususnya membuatnya lebih mudah untuk

membangun berbagai versi

sama aplikasi untuk model perangkat yang berbeda Bangunan individu binari untuk

target masing-masing

model perangkat adalah ide yang baik pada umumnya dan ini terutama penting untuk

permainan sejak Anda

perlu mengoptimalkan grafis Anda untuk menyesuaikan layar persis Dalam bagian ini

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 26: BB Bab 6 Edit (Autosaved)

anda akan melihat bagaimana

menggunakan Ant (dan arahan preprocessing BlackBerry) untuk membangun versi

yang berbeda dari

aplikasi dari kode yang sama ----- bahkan jika mereka memiliki sistem operasi yang

berbeda dan

dukungan API yang berbeda

Dan ada keuntungan lain untuk menggunakan Ant bahwa Anda akan melihat dalam

bagian ini saat membuat

Ant membangun sebuah file Anda akan belajar bagaimana membangun semua

langkah kerja dan bagaimana melaksanakan

mereka dari baris perintah Memiliki IDE menangani semua membangun langkah di

belakang

adegan tampak seperti bekerja kurang tapi tabungan palsu karena masalah

troubleshooting

jauh lebih mudah jika Anda mengerti semua langkah-langkah dan bagaimana

membangun semua intermediate

membangun file yang digunakan

Jika Anda belum memiliki Ant diinstal pada mesin Anda Anda dapat men-download dari

httpantapacheorg dan ikuti petunjuk instalasi di situs Anda juga akan

harus mendownload tool Ant BlackBerry dari httpbb-ant-toolssourceforgenet

Langkah instalasi hanya untuk menyalin file bb-ant-toolsjar ke instalasi Ants

lib direktori Jika Anda berencana untuk membangun game untuk perangkat non-

BlackBerry MIDP sebagai

baik maka Anda akan ingin mendownload dan menginstal Antena (lihat Gedunguntuk

MIDP lainnya

perangkat dengan Antenasidebar)

BANGUNAN UNTUK MIDP PERANGKAT LAIN DENGAN ANTENA

Antena adalah paket standar alat Ant untuk membangun aplikasi MIDP Antena

mencakup tugas untuk melakukan

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 27: BB Bab 6 Edit (Autosaved)

semua MIDP membangun langkah-langkah seperti menciptakan file JAR dan JAD

preprocessing penandatanganan JAR dan sebagainya

The BlackBerry JDE Aumlocircs membuat perangkat akan membuat file JAR dan JAD yang

valid yang dapat diinstal dan berjalan di non-

Perangkat BlackBerry Tapi ketika membangun proyek profesional Anda ingin memilih

alat yang tepat untuk pekerjaan itu

Tentu BlackBerry Aumlocircs alat dioptimalkan untuk BlackBerry Aumlocircs kebutuhan khusus dan

tidak dioptimalkan untuk menciptakan

file aplikasi sederhana yang terbaik untuk produsen lain perangkat AO

Jika Anda ingin merancang game cross-platform Anda mungkin harus memilih untuk

menulis MIDlet (bukan RIMlet alias

Aplikasi CLDC) dan kemudian melihat dokumentasi Antena untuk melihat bagaimana

menulis sebuah Ant membangun file untuk semua

Anda non-target perangkat BlackBerry Beberapa ide umum dalam bagian ini Aumlicircsuch

sebagai mendefinisikan properti

file untuk setiap perangkat target Aumlicircwill juga bekerja ketika menggunakan Antena Ant

tugas di tempat Ant BlackBerry

Alat tugas Kemudian Anda dapat menulis membangun file (seperti yang pada Listing 2-

10) yang akan memanggil Ant BlackBerry membangun

file untuk membangun untuk perangkat BlackBerry dan panggilan Antena membangun

file untuk membangun untuk perangkat lainnya

Hal ini juga memungkinkan untuk menulis sebuah game cross-platform dengan jenis

RIMlet aplikasi untuk target BlackBerry

platform sekaligus menciptakan sebuah MIDlet yang sesuai untuk target platform MIDP

lainnya Ini Aumlocircs hanya pertanyaan

mengisolasi siklus hidup dan kode user interface dalam beberapa kelas dan kemudian

memilih set yang benar sumber

kode file untuk setiap perangkat (menggunakan Ant) Lihat Bab 3 untuk contoh

permainan yang dapat dikompilasi sebagai salah satu

Kode 2-7 menunjukkan Ant build file untuk membangun Hello contoh BlackBerry

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 28: BB Bab 6 Edit (Autosaved)

Sebuah file Ant membangun terbuat dari satu set prosedur yang disebut target Untuk

menjalankan suatu target tertentu

buka command prompt arahkan ke direktori berisi file buildxml dan

jenis Ant lttargetnamegt Atau jika Anda ingin menjalankan default target (didefinisikan

dalam standar

atribut dari node proyek) hanya jenis Ant Tentu ini mengasumsikan bahwa Anda PATH

variabel lingkungan berisi path ke direktori bin Ant Jika tidak Anda dapat mengedit

PATH variabel dari menu Start Windows Start Control Panel 1048778 Sistem 1048778 1048778 Advanced 1048778

Variabel Lingkungan

Ant menggunakan properti untuk data proyek-spesifik seperti model perangkat dan

versi

nomor dalam contoh ini Properti Ant bukan sekali ----- variabel nilai telah ditetapkan

tidak dapat diperbarui selama membangun Nilai properti dapat diakses selama

membangun dengan melampirkan nama properti dalam kurung kurawal diawali dengan

tanda dolar

$ (Likethis) Dalam setiap string dikutip indikator nama properti akan diganti oleh

nilai yang sesuai

Ant nilai properti dapat diatur menggunakan elemen properti atau membaca dari

sebuah properti file

Either way Anda dapat mengganti properti dalam membangun file dengan

menggunakan-D atau -

propertyfile pilihan pada perintah baris ketika Anda menelepon Ant Dalam contoh ini

masing-masing

perangkat target memiliki sifat yang sesuai file yang berisi sistem operasi

ukuran layar dan nilai-nilai ukuran ikon Misalnya file properti menggambarkan

BlackBerry 8900 ditampilkan pada Listing 2-8 (Perangkat properti di properti 2-8

digunakan

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 29: BB Bab 6 Edit (Autosaved)

ketika mempersiapkan permainan untuk dijual di BlackBerry App Dunia seperti yang

dijelaskan dalam Bab 5)

Setiap kali file buildxml dijalankan properti dari file ini dimuat oleh

ltproperty file=models8900propertiesgt elemen di dekat bagian atas properti 2-7

Sebagai

Anda mungkin bisa menebak dari atribut file file tersebut harus ditempatkan dalam

subdirektori yang bernama model bersama dengan file data yang sesuai untuk

perangkat lainnya

bahwa Anda mungkin ingin untuk membangun Anda harus melakukan penelitian untuk

mencari data untuk semua

perangkat target Anda untuk menciptakan file properti Sebagian besar informasi yang

ada di

pengembang RIM situs (httpnablackberrycomengdevelopers) Anda juga bisa

mendapatkan

tepat informasi tentang masing-masing layar perangkat dan kemampuan grafis dari

BlackBerry Theme Studio (Seperti JDE itu its a download gratis di BlackBerry

situs pengembang dan memiliki built-in perpustakaan informasi perangkat model)

Langkah penting dalam properti 2-7 adalah membangun target Ini adalah titik di mana

Ant panggilan

BlackBerry membuat perangkat yang disertakan dengan JDE Anda download (seperti

dijelaskan sebelumnya dalam

tersebutMenggunakan BlackBerry JDEbagian) Membangun rapcexe yang dieksekusi

endaftaran yang dapat ditemukan dalam direktori sampah JDE yang menyebut

membangun alat yang rapcjar

file juga ditemukan di direktori bin di JDEs

Anda benar-benar dapat membangun seluruh proyek Anda dari baris perintah dengan

menggunakan rapcexe The JDE

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 30: BB Bab 6 Edit (Autosaved)

memberitahu Anda perintah yang tepat untuk menggunakan ---- itu muncul dalam

output konsol JDE itu bila Anda

membangun proyek Anda Untuk contoh BlackBerry Halo yang JDE menggunakan

perintah berikut

Ini tidak terlalu sulit untuk menafsirkan apa perintah ini lakukan Ini menyebut rapcexe

membangun

alat mengimpor Java RIM perpustakaan API (lihat Gambar 2-1) membaca JAD nyata

properti dari file HelloBBrapc (lihatMemahami BlackBerry

Aplikasi Filebagian) beberapa pengaturan preferensi pada peringatan output dan

kemudian

menetapkan semua kode dan file sumber daya

Anda dapat memulai membangun ini perintah langsung dari dalam Ant sejak tugas Ant

exec akan

memungkinkan Anda untuk memanggil perintah-line dieksekusi dengan daftar

parameter yang diinginkan Itu

bagaimana menjalankan dan target beban kerja di properti 2-7 Tapi karena perintah

argumen

menyertakan setiap file kode tunggal dan setiap sumber daya tunggal file secara

individu tugas exec

akan menjadi kekacauan besar untuk mempertahankan Di situlah BlackBerry Ant alat

itu masuk

bb-ant-toolsjar berisi tugas Ant disebut rapc yang pada dasarnya hanya akan

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 31: BB Bab 6 Edit (Autosaved)

menyusun

parameter panggilan yang benar untuk proyek Anda dan kemudian menggunakannya

untuk melaksanakan membangun

prosedur di rapcjar

Tugas Ant rapc menggunakan properti jdehome untuk menemukan rapcjar dan

net_rim_apijar

(Berisi perpustakaan Java RIM API) Untuk proyek profesional Anda harus download

beberapa yang berbeda BlackBerry ----- JDEs satu untuk setiap versi sistem operasi

RIM

Anda berencana untuk mendukung Jika Anda melihat di dekat bagian atas properti 2-7

Anda dapat melihat bahwa

properti jdehome diatur berdasarkan properti rimversion yang ditetapkan dalam target

perangkat properti file (Kode 2-8)

Tugas rapc cukup jelas (dan didokumentasikan dengan baik pada BlackBerry Ant

Peralatan situs httpbb-ant-toolssourceforgenet) tetapi ada beberapa poin yang

memerlukan penjelasan lebih lanjut Pertama unsur anak jdp adalah tempat di mana

permainan

JAD sifat nyata ditetapkan (lihat sebelumnyaMemahami BlackBerry

Aplikasi Filebagian) Jadi daripada menggunakan file RAPC aplikasi sifat seperti

nama dan ikon yang ditetapkan sebagai atribut dalam elemen jdp Yang lainnya yang

menarik

fitur adalah mendefinisikan elemen yang memungkinkan Anda untuk preprocess kode

berdasarkan Cstyle

define laporan

Preprosesing membuatnya sangat sederhana untuk membangun permainan Anda

untuk berbagai perangkat menggunakan

kode yang sama Untuk melihat cara kerjanya mari kita membangun sebuahHalo

Plus contoh Ini sama dengan

Halo contoh BlackBerry kecuali bahwa Anda mengganti kelas HelloWorldScreenjava di

Kode 2-4 dengan HelloWorldScreenjava lebih menarik diberikan pada Listing 2-9 dan

Anda mengubah properti projectname (di properti 2-7) dari HelloBB untuk HelloPlus

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 32: BB Bab 6 Edit (Autosaved)

The line preprocess di bagian atas file memberitahu compiler rapc untuk

preprocess file ini

berdasarkan laporan define Kemudian kode antara ifdef lain dan

Baris endif adalah baik disertakan atau dihapus berdasarkan mendefinisikan

elemen dalam rapc

tugas (di properti 2-7) Anda dapat melihat bahwa contoh Hello Plus akan menampilkan

yang JDE

versi digunakan ketika dibangun seperti yang ditunjukkan dalam Gambar 2-8

(Perhatikan bahwa versi JDE

mungkin tidak sama dengan versi sistem operasi yang sebenarnya pada perangkat

untuk -----

Misalnya jika pengguna menginstal versi yang salah Hello Plus untuk model perangkat

atau jika

pengguna upgrade sistem operasi pada perangkat) Untuk kejelasan perintah toggle

(MyToggleCommand) diabaikan

Gambar 2-8 Halo Plus berjalan di BlackBerry simulator 8900

Contoh Plus Halo juga menunjukkan cara mengakses dan menampilkan gambar Untuk

mendapatkan pegangan untuk

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 33: BB Bab 6 Edit (Autosaved)

sumber gambar Anda hanya panggilan BitmapgetBitmapResource () dengan nama

gambar

file Tidak seperti file JAR MIDP format file RIM COD tidak memiliki struktur file internal

sehingga Anda tidak perlu khawatir tentang path ke file gambar dalam file COD ---- ada

tidak satu Setiap file PNG yang termasuk dalam membangun akan dapat diakses

dalam

aplikasi hanya menggunakan nama file yang diidentifikasi gambar ketika file cod

dibangun

Sayangnya API RIM tidak konsisten tentang menggunakan nama file saja ketika

loading sumber daya Tergantung pada metode sumber daya-loading Anda gunakan

Anda kadang-kadang

harus tambahkan beberapa elemen jalan seperti (seperti yang akan Anda lihat di Bab

4) Sekarang Anda siap untuk membuat wrapper membangun file yang akan

membangun serangkaian COD

aplikasi file ---- satu untuk masing-masing perangkat target ----- dalam satu komando

Membangun

file diberikan pada Listing 2-10

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 34: BB Bab 6 Edit (Autosaved)

File dalam membangun properti 2-10 hanya membangun dua versi Hello Plus ----- satu

untuk

BlackBerry 7290 dan satu untuk BlackBerry 8900 ---- tetapi Anda dapat dengan mudah

melihat bagaimana

memperpanjang untuk menambahkan membangun untuk model perangkat lebih Dalam

target-membangun semua tugas Ant

panggilan buildxml file asli dengan properti yang didefinisikan di masing-masing model

perangkat

properti file Tidak peduli bahwa file buildxml di properti 2-7 memiliki nilai-nilai lain

ditetapkan untuk properti model karena (seperti dijelaskan) setelah Anda menetapkan

nilai properti

Ant Anda dalam membangun file kemudian berusaha untuk mengubah nilai properti

diabaikan Itu

alasan file-allxml membangun pada Listing 2-10 mampu mengubah nilai properti dari

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 35: BB Bab 6 Edit (Autosaved)

membangun satu versi ke yang berikutnya adalah karena hanya pengaturan properti

untuk individu

panggilan ke buildxml---- itu tidak menetapkan nilai properti untuk file-allxml

membangun sendiri

Poin yang saya sudah jenis glos atas keprihatinan ini bagian struktur file yang Anda

perlu dibuat untuk menjalankan Ant membangun Anda mungkin dapat melihat dari

properti 2-7 yang Anda perlu menciptakan sebuah direktori kerja yang berisi file Ant

Anda membangun dan memiliki dua

subdirektori model direktori yang berisi file device properti model dan

direktori proyek yang memiliki nama yang sama dengan proyek Di bawah direktori

proyek Anda

membuat subdirektori untuk kode sumber sumber daya teks file tersebut gambar

(dikelompokkan dalam

subdirektori dengan ukuran layar) dan ikon (dimana file icon diberi nama menurut

ukuran) Anda tidak perlu khawatir tentang rincian karena Anda hanya dapat

download direktori lengkap untuk membangun proyek ini dari wwwapresscom

Perhatian Ant membangun file dalam Listing 2-7 dan 2-10 menggunakan properti-versi

pelek di

model properti file (lihat properti 2-8) ketika memilih instalasi JDE untuk membangun

tugas

Dengan demikian Anda harus yakin bahwa properti model file hanya mengandung

nilai-versi pelek

yang sesuai untuk JDEs yang telah Anda instal di komputer Anda dinyatakan yang

membangun akan gagal

Sekarang Anda tahu semua tentang bagaimana membangun aplikasi BlackBerry mari

kita lihat berjalan

pada smartphone BlackBerry nyata

Instalasi dan Mendistribusikan Permainan Anda

Cara termudah untuk menginstal game pada perangkat Anda untuk pengujian adalah

dengan menghubungkan perangkat

ke PC Anda dengan kabel USB dan menggunakan alat JavaLoaderexe Cara

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 36: BB Bab 6 Edit (Autosaved)

termudah untuk

mendistribusikan permainan Anda kepada pengguna adalah untuk memungkinkan

mereka untuk men-download permainan langsung ke mereka

Perangkat BlackBerry Mari kita bicara tentang keduanya

Instalasi Lokal

Dalam direktori bin dari BlackBerry JDE Anda akan menemukan alat JavaLoaderexe

Jika Anda

buka command prompt dan ketik JavaLoader dalam direktori bin akan mencetak daftar

dari semua pilihan yang tersedia termasuk daftar aplikasi yang ada di perangkat

menginstal aplikasi menghapus aplikasi dan banyak lagi

Catatan Agar aplikasi JavaLoader untuk menghubungkan ke perangkat Anda Anda

harus memiliki

BlackBerry Desktop Manager aplikasi terinstal dan dijalankan pada PC Anda Aplikasi

ini

dilengkapi dengan perangkat ini tetapi jika Anda entah bagaimana punya perangkat

tanpa itu Anda dapat men-download dari

BlackBerry situs web (wwwblackberrycom) Bila Anda pasang perangkat Anda ke PC

menggunakan kabel USB BlackBerry Desktop Manager akan mendeteksi dan

menampilkan perangkat PIN

nomor di dasar jendela aplikasi Alat JavaLoader akan dapat terhubung ke

perangkat Anda jika dan hanya jika BlackBerry Desktop Manager terhubung ke

perangkat

Dengan asumsi bahwa file COD dalam direktori yang sama dengan JavaLoader

dieksekusi

menginstal aplikasi yang sederhana seperti mengetik perintah berikut

JavaLoaderexe -u load HelloBBcod

Jika Anda membangun dengan beberapa versi JDE maka itu lebih baik untuk tidak

menempatkan salah satu JDEs

direktori bin pada variabel lingkungan PATH anda Sebaliknya hanya membuat beban

dalam target Anda

Ant membangun file seperti yang ditunjukkan pada Listing 2-7 Dengan cara itu Anda

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 37: BB Bab 6 Edit (Autosaved)

dapat secara otomatis beban yang benar

versi hanya dengan menentukan properti model yang benar Misalnya jika Anda

menghubungkan

BlackBerry 8900 ke port USB Anda dan Anda ingin memuat aplikasi saat ini di atasnya

hanya

pergi ke direktori berisi file buildxml dan ketik berikut

ant -propertyfile models8900properties load

Demikian pula Anda dapat menjalankan aplikasi berjalan pada versi yang berbeda dari

simulator

menggunakan menjalankan tugas di file buildxml di properti 2-7 Perintah untuk

menjalankan simulator

adalah lebih sulit untuk mencari tahu dari perintah beban sejak JDE konsol tidak

memberitahu Anda

apa perintah untuk memulai menggunakan simulator dan layar membantu dari

simulator

dieksekusi (fledgeexe) bisa berdiri untuk menjadi sedikit lebih bermanfaat Aku

akhirnya figured it out

dengan menciptakan cara pintas ke opsi memulai simulator dari menu Start Windows

dan

lalu melihat sifat jalan pintas untuk melihat perintah yang tepat untuk mengeksekusi

Target menjalankan pertama menciptakan folder simulator-data di mana simulator

dijalankan

karena executable menciptakan beberapa file dalam direktori pelaksanaannya

termasuk

menjalankan log dan beberapa file biner yang mewakili memori flash simulator itu

Instalasi Remote

Instalasi permainan BlackBerry melalui Internet tidak dapat lebih mudah Yang harus

Anda lakukan adalah

membuka browser BlackBerry ke halaman yang berisi link ke atau file JAR JAD dan

kemudian klik link Perangkat BlackBerry akan melakukan sisanya

Meng-upload file ke internet cukup sepele juga Setiap halaman web --- layanan hosting

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 38: BB Bab 6 Edit (Autosaved)

yang memungkinkan Anda untuk meng-upload file ke direktori yang dapat diakses

publik akan dilakukan Jika Anda dapat

download file JAR atau JAD dengan browser PC Anda maka Anda perangkat

BlackBerry dapat

download dan menginstalnya

Ada beberapa langkah tambahan namun jika Anda berencana untuk menjual

permainan Anda di atas

Internet Jika Anda mendistribusikan game dari situs web Anda sendiri maka Anda

mungkin akan

ingin memiliki web server secara otomatis mendeteksi model BlackBerry dan

transparan pilih hak JAD file Jika Anda tidak ingin bekerja ekstra untuk

mendistribusikan

permainan diri sendiri Anda dapat menjualnya melalui BlackBerry App Dunia Kedua

pilihan ini tidak

dijelaskan dalam Bab 5 Tapi pertama-tama Anda harus membuat permainan yang

layak jual Untuk

itu pergi ke Bab 3 dan 4

Ringkasan

Menyiapkan lingkungan pengembangan Anda bukan langkah yang paling menghibur

dalam suatu proyek

tapi yang kritis Ketika berkembang untuk BlackBerry ----- bahkan jika Anda berencana

untuk mendirikan sebuah

otomatis membangun dengan Ant ----- Anda harus mulai dengan membiasakan diri

Anda dengan BlackBerry

JDE karena JDE meliputi membangun dieksekusi (rapcexe) yang menghasilkan

BlackBerry milik binari

Langkah berikutnya adalah untuk membangun sebuah aplikasi Halo Dunia dan

mendapatkannya berjalan pada kedua simulator

dan smartphone sebenarnya BlackBerry menawarkan dua jenis aplikasi mungkin

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 39: BB Bab 6 Edit (Autosaved)

MIDlet dirancang untuk berjalan pada banyak handset kurang kuat dan memiliki

keuntungan

bahwa mereka berjalan pada ponsel MIDP sedangkan RIMlets ----- dirancang untuk

BlackBerry oleh

RIM ---- memungkinkan Anda untuk memanfaatkan potensi penuh smartphone

BlackBerry seperti yang akan Anda lihat

seluruh buku ini

3 Chapter

Game Grafis dan Acara dengan MIDP dan Kelas RIM

Grafis dan antarmuka pengguna (UI) kelas merupakan tempat di mana Anda harus

memilih

antara menggunakan MIDP perpustakaan dan pustaka RIM Untuk jenis lain sebagian

besar

fungsi RIM telah membuat pilihan untuk Anda dengan menerapkan standar baik JSR

atau perpustakaan milik RIM Dalam bab ini Anda akan mempelajari bagaimana filosofi

dari dua jenis aplikasi berbeda dan Anda akan melihat bagaimana kapan dan

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 40: BB Bab 6 Edit (Autosaved)

mengapa menggunakan baik RIM grafis kelas UI grafis MIDP UI kelas atau

keduanya

Game Maze

Untuk perangkat kecil jangan meremehkan nilai permainan dasar Khususnya pada

BlackBerry ---- yang digunakan orang di tempat kerja dan berguna saat menunggu di

garis atau Komuter dengan kereta api ---- pengalihan kecil seperti solitaire atau

mahjong sering hanya apa yang user cari

Kita akan mulai dengan sebuah permainan di mana pengguna memecahkan labirin

secara acak Tidak hanya Mazepermainan yang lengkap dengan sendirinya tetapi bisa

berfungsi sebagai sebuah blok bangunan untuk lebih platformand kompleks arcade-

style game Ini juga menggambarkan prinsip-prinsip dasar penanganan navigasi user

masukan dan menggambar permainan di layar untuk kedua jenis aplikasi BlackBerry

Menggambar dengan Kelas Graphics

Anda akan melihat kanan ---- di bagian atas properti 3-1 ----- bahwa kami mengimpor

kepemilikan RIM kelas (netrimdeviceapiuiGraphics) ketika kita mungkin telah

memilih yang sesuai MIDP kelas (javaxmicroeditionlcduiGraphics) Bahkan RIM versi

Graphics

kelas sangat dekat dalam hal fungsionalitas dengan versi MIDP bahwa pernyataan

impor adalah

hanya hal yang Anda perlu mengubah untuk menggunakan kelas ini permainan di

MIDlet bukan dalam RIMlet Dalam MIDPvsRIM bagian dari bab ini Anda akan

menggunakan logika permainan yang sama untuk membuat dua versi dari contoh

permainan labirin MIDP Maze Maze dan BB Dan jika Anda membungkus bahwa

pernyataan impor dalam instruksi ifdef preprocessing seperti yang kami lakukan pada

Listing 2 - 9 Anda dapat membangun kedua contoh dari kode yang sama

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 41: BB Bab 6 Edit (Autosaved)

Obyek Graphics selalu dikaitkan dengan permukaan gambar virtual Ini seperti

pena gambar yang dapat digunakan menggambar hal-hal seperti garis bentuk teks

atau gambar ke dalam mendasari permukaan gambar Permukaan bisa menjadi daerah

layar itu sendiri atau dapat

sebuah buffer gambar dalam memori The drawMaze () method pada Listing 3-1

dirancang untuk menarik labirin tanpa memperhatikan apa jenis permukaan itu

menggambar di atas

Koordinat dari permukaan gambar diberikan dalam pixel dengan (0 0) yang mewakili

topleft yang

sudut Menggambar dengan kelas Graphics adalah sedikit seperti grafik fungsi dalam

matematika

kecuali bahwa nilai y koordinat meningkat karena Anda bisa turun bukannya naik

Pada contoh Maze permukaan gambar akan menutupi seluruh layar sehingga

MazeGame

obyek diinisialisasi dengan panjang sebenarnya dan lebar layar perangkat Kemudian

dalam

konstruktor Anda melakukan beberapa perhitungan untuk menentukan seberapa besar

sebuah grid kotak akan muat di layar mengingat ukuran persegi bahwa pengguna yang

dipilih (seperti yang akan Anda lihat pada Listing 3-3) Anda menarik labirin sendiri

dalam drawMaze () metode pewarnaan beberapa kotak kotak lain hitam (untuk mewakili

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 42: BB Bab 6 Edit (Autosaved)

dinding labirin) dan putih (untuk mewakili jalan bahwa

pemain dapat mengikuti) Gambar 3-1 menunjukkan apa yang tampak seperti labirin

selesai

Gambar 3-1 Contoh BB Maze berjalan pada simulator

7290

Catatan objek Centering di layar sering melibatkan nilai membagi dengan 2 Untuk

dibaca saya biasanyahanya menggunakan operator divisi dalam contoh kode Tapi

Anda harus menyadari bahwa membagi waktu denganpangkat 2 operator pergeseran

melakukan hal yang sama dan lebih efisien Dengan kata lain x 2 adalahsama dengan

xgtgt 1 Beberapa compiler dapat melakukan optimasi ini untuk Anda di belakang layar

Sekarang semua yang Anda butuhkan adalah data untuk memutuskan mana kotak

yang dinding dan yang jalan Itu dihitung pada Listing 3-2

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 43: BB Bab 6 Edit (Autosaved)

Seperti yang anda lihat logika cara menciptakan labirin acak benar-benar terisolasi

dalam

kelas ini Lihat Memahami AlgoritmaMaze sidebar untuk cara kerjanya Semua

bahwa kelas-kelas lain harus Anda lakukan untuk menciptakan labirin baru adalah

membuat sebuah instance Grid dengan dimensi grid valid dan kemudian gunakan

isWall () accessor untuk memutuskan mana kotak adalah kotak jalan kosong dan kotak

yang diisi kotak di dinding

MEMAHAMI ALGORITMA MAZE

Seperti banyak algoritma permainan menciptakan labirin acak hanya membutuhkan

sedikit penalaran matematika Pikirkan jalur melalui labirin sebagai grafik Simpul

adalah titik di mana dua jalur bergabung atau di mana Anda bisa mengubah dan jalur

yang menghubungkan simpul tepi Sudah jelas bahwa untuk labirin Anda ingin grafik

Anda menjadi salah satu pohon-dengan kata lain menghubungkan grafik tanpa siklus

Selama titik masuk dan titik keluar adalah bagian dari satu pohon terhubung akan ada

tepat satu jalur dari awal sampai akhir

Untuk menerapkan ide ini dan membuat labirin langkah pertama adalah menggunakan

layar dan dimensi grafis untuk menentukan ukuran grid Anda simpul (berapa banyak

kotak dan berapa banyak di bawah) Mulailah dengan membagi lapangan bermain

seluruh ke dalam kotak yang sama-ukuran yang merupakan bagian dari jalur labirin jika

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 44: BB Bab 6 Edit (Autosaved)

berwarna bagian putih dan dari dinding labirin jika berwarna hitam Anda bisa lihat pada

Gambar 3-2 bahwa ada kisi kuadrat

yang anda tahu harus hitam dan kisi-kisi yang Anda tahu harus putih Caranya adalah

dengan mencari tahu yang warna untuk memberikan ke kotak wildcard

Pada Gambar 3-2 semua kotak yang warnanya harus diputuskan oleh algoritma

berwarna abu-abu (dicatat bahwa layar ini tidak pernah muncul dalam pertandingan

final) Dalam hal grafik kotak putih adalah simpul dan abu-abu kuadrat adalah kotak

yang sangat mungkin tepi dengan akan ditambahkan pada jalur maze dan berbalik

putih Anda dapat melihat dari hal ini bahwa jumlah baris dan jumlah kolom berdua

harus angka ganjil

Algoritma ini bekerja dengan memilih salah satu kotak putih secara acak dari tengah

grid dan

tumbuh pohon dari sana dengan memilih ragu-ragu (abu-abu) kotak dan mengubahnya

putih Sepanjang algoritma Anda mempertahankan daftar semua kotak putih (simpul)

yang belum tersambung ke maze tetapi hanya satu persegi abu-abu jauh dari yang

dihubungkan masuk Pada setiap putaran algoritma Anda menggunakan kelas

javautilRandom untuk memilih satu persegi dari daftar dan pasangkan ke labirin

(dengan memutar abu-abu persegi putih maka menambahkan tepi ke grafik)

Kemudian terus sampai tidak ada kotak putih kiri yang tidak terhubung ke grafik jalur

labirin dan warna abu-abu sisa kotak hitam

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 45: BB Bab 6 Edit (Autosaved)

Gambar 3-2 Titik awal untuk algoritma labirin

Dengan hanya menambahkan tepi dapat terhubung simpul yang belum terhubung ke

grafik Anda dapat melihat bahwa Anda tidak akan pernah mendapatkan siklus Dan

dengan grafik tumbuh dari satu titik pusat Anda dapat yakin bahwa semua simpul akan

terhubung ke komponen yang sama Jadi pada akhirnya untuk setiap dua kotak putih di

maze

ada tepat satu jalur yang mengarah dari satu ke yang lain terutama ada jalur unik dari

entri

persegi dengan kuadrat keluar

Ketika membuat kelas Grid ada satu optimasi poin yang perlu dipertimbangkan

pertimbangan untuk BlackBerry memori

Menggunakan Memory

perangkat BlackBerry memiliki keterbatasan pada berapa banyak Jawa objek mereka

dapat terus dalam

memori Sebagai contoh sebuah smartphone BlackBerry dengan 16MB memori flash

bisa menampung

56000 objek Itu banyak objek namun perlu diingat bahwa itulah hitungan semua objek

dalam seluruh sistem termasuk benda yang diciptakan oleh AMS dan yang dibuat oleh

aplikasi lain yang berjalan di latar belakang Secara umum Anda harus berhati-hati

untuk menciptakan banyak dari obyek yang kompleks (benda-benda dengan bidang

yang benda lainnya) dan terutama pengisian Vektor dan Hashtables dengan kompleks

objek Pada Listing 3-2 algoritma labirin menggunakan Vector ketika membangun

maze data tapi seperti yang Anda lihat dalam constructor Vector dibebaskan untuk

pengumpulan sampah sebagai Segera setelah tidak lagi diperlukan Optimasi lain

mungkin mungkin untuk membersihkan dan menggunakan kembali objek Grid saat

membuat labirin baru daripada membuat contoh baru Grid setiap kali Pada akhirnya

jumlah benda tetap sama tetapi melepaskan satu Misalnya Grid untuk membuat lain

menambahkan beberapa pekerjaan tambahan untuk kolektor sampah Itu mengapa

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 46: BB Bab 6 Edit (Autosaved)

banyak kelas dalam bab ini adalah lajang (yang dirilis untuk sampah koleksi ketika

permainan berakhir) jika hanya satu contoh kelas diperlukan

Perangkat BlackBerry juga memiliki keterbatasan pada penggunaan penyimpanan

persisten RIM

platform perangkat memiliki built-in fungsi untuk serialisasi objek di memori terus-

menerus

menggunakan netrimdeviceapisystemPersistentStore dan

netrimdeviceapisystemPersistentObject Seperti jumlah benda hidup jumlah objek

persisten juga terbatas dan dalam hal ini Anda memiliki lebih khawatir tentang dari

persaingan dengan aplikasi lain karena data aplikasi lain tetap dalam penyimpanan

apakah aplikasi sedang berjalan atau tidak

Permainan Maze menggunakan sejumlah kecil ----- persistent storage cukup untuk

menyimpan

ukuran yang diinginkan pengguna persegi Dinding labirin dapat bervariasi lebar yang

mempengaruhi kompleksitas labirin Pengguna dapat mengubah ukuran persegi dan

jika ia tidak yang menyimpan aplikasi ukuran persegi yang dipilih Kalau begitu ukuran

kotak labirin grid akan menjadi waktu berikutnya pengguna memainkan game bahkan

jika perangkat dimatikan danbaterai dikeluarkan antara bermain

Karena kita mengoptimalkan Maze Maze MIDP BB dan contoh untuk cross-platform

kompatibilitas kelas PrefsStorage (Listing 3-3) menggunakan MIDP Record

Management

System (RMS) yang tersedia pada setiap perangkat MIDP Untuk aplikasi yang

memerlukan

struktur file lebih kompleks Sambungan File API (dari JSR 75) akan menjadi pilihan

yang lebih baik

RMS MIDP pada BlackBerry tidak memiliki batasan ukuran yang sama dengan RIM

gigih objek toko Dari versi 41 BlackBerry dan atas ukuran individu RecordStore

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 47: BB Bab 6 Edit (Autosaved)

terbatas baik di 64KB atau 512KB tetapi jumlah memori yang dapat ditugaskan untuk

digunakan oleh RMS MIDP hanya dibatasi oleh jumlah memori bebas yang tersisa di

perangkat Masih bisa masalah optimasi bagaimanapun karena perangkat yang

biasanya set samping blok berukuran tetap memori ketika RecordStore dibuat (dan saat

Record

dibuat dalam RecordStore) dan ukuran blok default dapat bervariasi dari satu

perangkat ke perangkat lainnya

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 48: BB Bab 6 Edit (Autosaved)

Sebuah RecordStore MIDP adalah kumpulan nomor array byte Jika data untuk

menyimpan lebih

kompleks daripada array byte MIDlet yang bertanggung jawab untuk serialisasi atau

unserializing nya sendiri array data ke dalam format byte Setiap RecordStore dikaitkan

dengan MIDlet suite (yang koleksi MIDlets dalam file JAR tunggal) dan itu dihapus jika

MIDlet suite dihapus

Catatan Meskipun game MIDP toko kaset akan dihapus ketika permainan dihapus hal

yang sama

tidak berlaku untuk obyek BlackBerry persisten atau file yang dibuat dengan JSR 75s

File Connection API Anda harus mempertimbangkan hal ini ketika memutuskan jenis

ketekunan yang terbaik bagi aplikasi Anda

Setiap MIDlet dapat membuat beberapa RecordStores Ini memberikan RecordStore

nama (String)

saat membuat itu dalam rangka untuk mengidentifikasi ketika membukanya lagi nanti

The MIDlets dalam tunggal MIDlet suite dapat mengakses RecordStores masing-

masing tetapi tidak dapat normal mengakses RecordStores lainnya MIDlet ----- kecuali

jika MIDlet menentukan AUTHMODE_ANY ketika

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 49: BB Bab 6 Edit (Autosaved)

menciptakan RecordStore dalam hal apapun MIDlet pada perangkat dapat

mengaksesnya

Meskipun spesifikasi MIDP RMS hanya mencakup MIDlets RIMlets dapat membuat

dan menggunakan

RecordStores juga sebagai contoh menunjukkan Maze BB Secara umum MIDP API

pada

perangkat BlackBerry yang tersedia untuk RIMlets seperti API RIM pada perangkat

yang tersedia

untuk MIDlets berjalan pada perangkat BlackBerry Para ---- pengecualian tempat di

mana Anda

dipaksa untuk memilih satu atau yang lainnya kelas ---- siklus hidup (seperti yang Anda

lihat dalam Bab 2) dan grafis penanganan input acara dan kelas UI Anda akan

melihat di bagian berikutnya

Penanganan Platform Acara dengan MIDP vs RIM

Permainan labirin logika Anda telah melihat begitu jauh dalam bab ini dapat diterapkan

untuk baik MIDlet atau RIMlet sebuah Pada bagian ini Anda akan menciptakan sisa

pertandingan dalam dua versi MIDlet disebut versi MIDP Maze dan versi RIMlet

disebut BB Maze Anda dapat menggunakan teknik untuk membuat otomatis

membangun yang akan membangun sebuah versi RIMlet permainan untuk

BlackBerry dan versi MIDP untuk perangkat lainnya dengan memiliki Ant Anda

membangun file pilih

hak atas kelas sebelum membangun untuk setiap perangkat Anda tidak teknis perlu

membuat

sebuah RIMlet versi untuk perangkat BlackBerry (sejak MIDlet akan berjalan pada

mereka) tetapi ketika

Anda melihat berapa banyak lagi yang dapat Anda lakukan dengan ----- RIMlet pada

contoh Maze Deluxe di Bab 4 ----- Anda mungkin ingin

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 50: BB Bab 6 Edit (Autosaved)

side-by-side perbandingan ---- Labirin Maze MIDP dan contoh BB ----- akan

menunjukkan

perbedaan sehingga Anda akan tahu bagaimana memilih dan menggunakan mana satu

yang terbaik untuk diberikan proyek Setelah bab ini kita hanya akan tetap dengan

RIMlets untuk sebagian besar sisa buku (Kecuali permainan dam dari Bab 7 yang

merupakan contoh lain yang bergantung pada crossplatform kompatibilitas)

Memperoleh Menangani di Permukaan Menggambar

Sekarang mari kita melihat bagaimana untuk mendapatkan hak Graphics untuk

menggambar objek pada layar

Listing 3-4 menunjukkan bagaimana Anda cat layar RIMlets

netrimdeviceapiuiScreen The

dirancang untuk memungkinkan Anda untuk menambahkan satu set komponen UI

untuk itu Pada layar permainan utama semua yang Anda inginkan adalah untuk

menutupi seluruh tampilan dengan kanvas kosong untuk menggambar jadi ----- seperti

di

Listing 2-4 dari BlackBerry ----- Hello misalnya Anda menambahkan hanya satu

komponen ke

layar Dalam hal ini komponen adalah BitmapField memegang Bitmap yang

dibangun untuk menjadi ukuran yang sama sebagai layar perangkat

The Bitmap itu sendiri adalah hanya sebuah buffer data citra Dalam contoh Maze BB

Anda membuat dua Bitmap sehingga Anda dapat menarik pada satu di latar belakang

sementara yang lain ditampilkan pada layar Setelah Anda selesai menggambar di satu

di latar belakang Anda menempatkannya di

frame BitmapField bergerak

ke latar depan layar

perangkat Teknik ini disebut

double-buffering

Kebanyakan perangkat MIDP

double-buffer layar grafis

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 51: BB Bab 6 Edit (Autosaved)

secara otomatis dengan memiliki cat () menggambar metode dalam buffer kembali dan

memiliki platform memindahkannya ke latar depan ketika cat () dilakukan Tetapi

beberapa perangkat MIDP mungkin memiliki cat () metode menulis langsung ke

tampilan saat ini sehingga berpotensi pengguna bisa lihat langkah-langkah gambar

menengah Secara eksplisit double-buffering dengan mengendalikan dua Bitmap buffer

diri mengambil menebak dari itu

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 52: BB Bab 6 Edit (Autosaved)

Mencari di paintMaze () metode Anda dapat melihat bahwa Anda menciptakan

Graphics obyek

menggambar pada permukaan gambar Bitmap Kontras ini dengan kelas yang sesuai

untuk Maze MIDP versi kelas ini pada Listing 3-5 The Graphics obyek untuk

menggambar pada MIDP Canvas disediakan oleh platform ketika AMS panggilan cat ()

untuk cat layar Dalam kedua kasus kelas MazeGame (Listing 3-1) panggilan

paintMaze () untuk meng-update layar setelah bergerak pemain tetapi aliran kontrol

yang datang berikutnya adalah sedikit berbeda dalam dua contoh Pada versi Maze

MIDP (Listing 3-5) paintMaze () hanya panggilan repaint () di Untuk prompt platform

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 53: BB Bab 6 Edit (Autosaved)

untuk antrian permintaan cat Bila platform sudah siap panggilan MazeScreens cat ()

menyediakan Graphics objek untuk melukis di kanvas dan kemudian MazeScreen

melewati Graphics bersama untuk MazeGame dengan memanggil drawMaze () metode

untuk menggambar maze Pada versi Maze BB (Listing 3-4) yang paintMaze () method

(Disebut oleh MazeGame setelah bergerak player) menciptakan objek Graphics untuk

Bitfield dan kemudian meneruskannya bersama untuk memanggil drawMaze

MazeGames () method Hanya setelah maze gambar dilakukan dan Bitmap baru

ditempatkan dalam BitmapField bahwa platform mendapatkan ke dalam bertindak dan

update layar

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 54: BB Bab 6 Edit (Autosaved)

Input Pengguna Penanganan Acara

Kode pada Listings 3-4 dan 3-5 juga menunjukkan bagaimana menangani input

pengguna dari keypad

dan dari trackball atau trackpad optik Dalam setiap kasus yang harus Anda lakukan

adalah mengesampingkan metode yang platform panggilan dalam menanggapi input

pengguna (Penanganan masukan dari touchscreen dan dari accelerometer dibahas

dalam Bab 6)

Dalam kasus Maze MIDP (Listing 3-5) platform panggilan metode keyPressed () dari

javaxmicroeditionlcduiCanvas kelas dengan kode menunjukkan tombol yang ditekan

Karena perangkat MIDP dapat memiliki semua macam jenis keyboard kode kunci nilai-

nilai yang tidak standar ----- pemetaan antara nilai keycode dan tombol yang sesuai

bervariasi dari satu perangkat ke yang berikutnya Itulah mengapa Anda harus

menafsirkan nilai dengan getGameAction () metode yang memberitahu anda apakah

tekan tombol tindakan secara logis sesuai dengan tindakan navigasi The

getGameAction () metode peta tindakan ke konstanta UP BAWAH KIRI dan KANAN

yang dapat digunakan untuk memindahkan pemain di MazeGamemove () metode (lihat

properti 3-1)

The keyChar () dan navigationMovement () metode dalam contoh Maze BB (Listing 3-4)

bahkan lebih intuitif daripada versi Maze platform MIDP karena memberi Anda

sebenarnya karakter yang diketik ke dalam papan tombol (atau jarak delta navigasikan

oleh

trackball gerakan) bukan pemetaan input ke nilai samar kode kunci Dalam hal ini

Misalnya Anda peta nilai karakter atau delta ke kode aksi permainan MIDP sebelum

lewat aksi bersama untuk MazeGamemove () sehingga dua versi MazeScreen adalah

keduanya kompatibel dengan kelas MazeGame sama

The navigationMovement () method pada Listing 3-4 hanya memberikan acara empat

arah gerakan

untuk perangkat BlackBerry yang memiliki trackball Itu sebabnya metode ini dikelilingi

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 55: BB Bab 6 Edit (Autosaved)

dalam

preprocessing arahan untuk menghilangkan ketika kelas dikompile untuk trackwheel

perangkat jika tidak itu akan menyebabkan menghubungkan error pada saat runtime

Karena itu membingungkan menerima masukan trackwheel satu-dimensi untuk navigasi

labirin dua-dimensi

masukan trackwheel hanya diabaikan

Perintah menu implementasi di Listing 3-4 dan 3-5 seharusnya tidak menawarkan

kejutan karena itu sama dengan pelaksanaan di contoh Hello World pada Listings 2-2

dan 2-4 Bagian yang hilang adalah pelaksanaan perintah Maze MIDP yang (seperti di

contoh Hello

MIDP)

berlangsung di

kelas MIDlet

yang diberikan

pada Listing 3-

6

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 56: BB Bab 6 Edit (Autosaved)

Seperti pada contoh BB Halo siklus hidup kelas untuk BB Maze (Listing 3-7) tidak

menangani

masukan perintah

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 57: BB Bab 6 Edit (Autosaved)

Sekarang Anda memiliki hampir semua potongan yang Anda butuhkan untuk

membangun dua versi maze permainan Listing 3-1 3-2 3-3 3-5 dan 3-7 bergabung

membentuk MIDP Maze dan Listings 3 -

1 3-2 3-3 3-4 dan 3-6 bergabung membentuk BB Maze Dalam setiap kasus ada

hanya satu potong

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 58: BB Bab 6 Edit (Autosaved)

hilang antarmuka pengguna grafis (GUI) layar yang memungkinkan pengguna untuk

memilih

dimensi maze

Menggunakan Komponen GUI

Selain tempat bermain game biasanya juga memiliki beberapa layar UI untuk tindakan

seperti

memasukkan nama Anda ketika Anda mendapatkan nilai tinggi atau memilih lawan

untuk bermain melawan

Tentu saja Anda dapat mengimplementasikan fungsionalitas UI sendiri hanya dengan

menggambar seluruh widget ke kanvas kosong dan kemudian menafsirkan data

keystroke dan navigasi di dengan cara yang sama yang Anda menerapkan bagian

utama dari permainan Tapi karena UI biasanya ---- terdiri dari komponen standar satu

set widget masukan pada tumpukan layar ----- Anda dapat mengambil keuntungan dari

platform built-in fungsi UI untuk membuat widget yang cocok dengan gaya navigasi

standar perangkat

Baik MIDP dan RIM menawarkan serangkaian input built-in kelas untuk widget standar

seperti teks bidang dan daftar pilihan Sayangnya user interface MIDP ----- paket

disebut LCDUI

(Terbatas Kemampuan User Interface Device )---- jauh lebih terbatas daripada yang

Anda inginkan untuk profesional game filsafat adalah bahwa perangkat lebih tahu dari

yang Anda lakukan cara lay out UI sehingga menjaga tampilan dan merasa benar-

benar Sayangnya Anda tidak memiliki pilihan untuk menimpa tampilan default dan

merasa bahkan ketika Anda tahu apa yang Anda lakukan Dan widget MIDP begitu

jelek ---- di setiap perangkat yang pernah saya lihat ----- bahwa mereka tidak sesuai

untuk digunakan dalam permainan profesional Lihat saja pilihan ukuran layar untuk

game maze (menggunakan widget default) pada Gambar 3-3

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP berjalan pada simulator 7100r

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 59: BB Bab 6 Edit (Autosaved)

Gambar 3-3 Pemilihan ukuran layar contoh Maze MIDP

berjalan pada simulator 7100r

Ketidakmampuan untuk menyesuaikan UI adalah salah satu kelemahan desain terbesar

di MIDP Dalam MIDP Anda memiliki tiga pilihan

Buat UI jelek generik yang tidak memiliki warna permainan Anda

atau gambar

Menemukan kembali roda dengan menggambar widget Anda pada kanvas

kosong dan

menafsirkan kode kunci yang berbeda untuk semua perangkat target Anda

melaksanakan semua navigasi widget dan fungsi untuk UI

Gunakan solusi pihak ketiga seperti J2ME Polish

Satu solusi pihak ketiga yang harus diperhatikan adalah open source Sun Ringan UI

Toolkit

(LWUIT) LWUIT ini didasarkan pada Swing ---- seperti RIM UI ----- kelas sehingga

banyak dari

kelas di dua API hampir identik Untuk membuat aplikasi cross-platform dari basis kode

tunggal Anda dapat menggunakan preprocessing untuk mengimpor kelas RIM saat

bangunan untuk BlackBerry dan impor kelas LWUIT terkait saat bangunan untuk

platform lain (sama seperti kelas MazeGame dari properti 3-1 ditulis untuk menjadi

kompatibel dengan baik versi dari kelas Graphics) Ada juga kemungkinan untuk

menggunakan LWUIT ini kelas pada BlackBerry tetapi tidak ada alasan khusus untuk

melakukannya ketika Anda memiliki akses ke versi yang dioptimalkan-untuk-

BlackBerry-by-RIM asli API yang sama Untuk kesederhanaan Namun dalam contoh

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 60: BB Bab 6 Edit (Autosaved)

Maze MIDP kita akan pergi dengan pilihan pertama (pada Listing 3-8) dan membuat

javaxmicroeditionlcduiScreen dengan dua javaxmicroeditionlcuduiGauge benda di

atasnya Yang pertama akan memungkinkan pengguna untuk memilih ukuran kotak

yang membuat Facebook dinding labirin dan yang kedua akan menampilkan jumlah

pengguna yang sesuai kolom yang akan muat di layar

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 61: BB Bab 6 Edit (Autosaved)

Anda dapat melihat bahwa widget sendiri menerima input melalui ItemStateListener

interface yang menerima aktivitas untuk seluruh Produk (widget) di layar dalam banyak

sama cara yang MIDP LCDUI event perintah semua dikelompokkan oleh layar dan

dikirim ke pendengar antarmuka tunggal Seperti yang mungkin Anda harapkan RIM

Fields (widget) menerima mereka acara sendiri dalam cara yang sama seperti

MenuItems RIM dari Listing 2-4 dan 3-4 sehingga Anda harus menyediakan

implementasi sendiri subclass Seperti dengan MenuItems sebelumnya fungsi perintah

myWidthGauge pada Listing 3-9 diimplementasikan dengan anonim dalam kelas

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 62: BB Bab 6 Edit (Autosaved)

Sayangnya meskipun pelaksanaan widget RIM berbeda dari pelaksanaan widget

LCDUI MIDP hasilnya sama jelek seperti yang Anda lihat dalam Gambar 3-4

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry

Page 63: BB Bab 6 Edit (Autosaved)

Gambar 3-4 Pemilihan ukuran layar contoh Maze BB berjalan pada simulator 7290

Widget RIM bagaimanapun memiliki satu keuntungan besar dibandingkan widget

MIDP Anda dapat mengecat kembali mereka Itulah apa yang akan anda lakukan

dalam Bab 4

Ringkasan

Sebuah smartphone BlackBerry mendukung dua jenis aplikasi Java ME Logikanya

mereka seperti dua profil yang berbeda (MID Profil dan RIM Profil )---- dengan terpisah

siklus hidup dan UI kelas ----- dibangun di atas CLDC Dua set siklus hidup dan

antarmuka kelas memiliki banyak kesamaan yang dangkal tetapi untuk aplikasi tertentu

Anda harus memilih satu mengatur atau yang lain (tidak ada campuran-dan-

pertandingan) Ini adalah ide yang baik untuk memahami bagaimana menggunakan

kedua profil karena Profil MID berguna ketika pemrograman untuk cross-platform

kompatibilitas sedangkan Profil RIM memungkinkan Anda untuk mengoptimalkan untuk

BlackBerry