REFARAT INTERNA Artritis Reumatoid Baru (Autosaved) (Autosaved)
BB Bab 6 Edit (Autosaved)
-
Upload
nasri-samier-iboy -
Category
Documents
-
view
96 -
download
0
Transcript of 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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