XtGem Forum catalog

MXH AVATAR[iOS, ANDROI, JAVA]
IWIN ONLINE 2013[iOS, ANDROI, JAVA]
NAM QUỐC SƠN HÀ - KHÍ PHÁCH ANH HÙNG[iOS, ANDROI, JAVA]
MOBIARMY- SO TÀI SÚNG NHỰA[iOS, ANDROI, JAVA]
MUSIC CITY-NHẢY AUDITION[iOS, ANDROI, JAVA]
Lý thuyết j2me


Phát triển game đơn giãn trên Mobile(P1)
Giới thiệu:
Bài này nhằm mục tiêu cung cấp hướng dẫn, giới thiệu về cách thức để phát triển một trò chơi đơn giãn trong J2ME. Trước khi đọc bài này, tôi khuyên bạn nên tìm hiểu sơ lược về platform J2ME.Đây là một trong 3 platform của Java được sử dụng để phát triển các ứng dụng trên các thiết bị nhúng, mobile…Bây giờ, hãy cùng tìm hiểu phần 1.
Phần một:
Ngõ vào ứng dụng(entry point):
Trong tất cả các ứng dụng trên J2ME, để chạy ứng dụng chúng ta phải extends từ lớp ảo(abstract) MIDlet trong gói javax.microedition.midlet, tương tự như tạo một applet phải extend từ lớp java.applet.Applet. Và entry point của nó là phương thức startApp(), tương tự như phương thức main() trong J2SE.
Ví dụ: Ta có một lớp MyMidlet.
public class MyMidlet extends MIDlet{
// invoked when the application starts and each time is resumed
protected void startApp() throws MIDletStateChangeException {}
// invoked when the MIDlet needs to be destroyed
protected void destroyApp(boolean uncondicional) throws MIDletStateChangeException {}
// invoked when the MIDlet needs to be paused. (Some phones ignore pauseApp().)
protectedvoid pauseApp() {}
}
Nếu bạn tạo project và chạy file này thì nó chỉ hiển thị màn hình blank.
Tiếp theo, để trình bày nội dung trong ứng dụng, bạn cần sử dụng lớp Display. Lớp Display điều khiển tất cả những gì xảy trong màn hình của MIDlet, mỗi MIDlet có một đối tượng Display và truy cập nó thông qua việc sử dụng phương thức tĩnh getDisplay().
Để biểu diễn một đối tượng nào đó trên màn hình, bạn cần phải sử dụng phương thức setCurrent() của lớp Displayable.
Ví dụ: ta có một lớp Alert, lớp này kế thừa từ lớp Displayable, trong ví dụ này sử dụng Alert để hiển thị một câu thông báo đơn giãn lên màn hình.
Alert alert;
//entry point for the application
protectedvoid startApp() throws MIDletStateChangeException {
// tạo alert
alert = new Alert("Hello World");
// shows alert in the screen.
Display.getDisplay(this).setCurrent(alert);
}
Nếu chạy chương trình, bạn sẽ thấy nó hiển thị ra một thông điệp như sau:
Tiếp theo, để thêm các command cho ứng dụng, như commad exit, bạn xử lý như sau:
Command comExit;
[...">
protected void startApp() throws MIDletStateChangeException {
[...">
// create command
comExit = new Command("Exit", Command.EXIT, 1);
// add a command to exit the Midlet
alert.addCommand(comExit);
[...">
}
Đoạn code trên show cho bạn command exit lên màn hình, nhưng khi bạn click vào, nó không làm gì cả bởi bạn cần thêm CommandListener vào Alert để đăng ký một listener.
public class MyMidlet extends MIDlet implements CommandListener{ publicvoid startApp(){ [..."> // adds a listener to the alert
alert.setCommandListener(this);
}
public void commandAction(Command cmd, Displayable display)
{ // ktra xem loai lenh nao thuc hien.
if (cmd == comExit)
{
notifyDestroyed();
}
}
}
Với thay đổi này, chúng ta có một MIDlet hoàn chỉnh. Ở phần tiếp theo, chúng ta sẽ có một cái nhìn chi tiết hơn về các phần tử giao diện người dùng như: Alert, Display, và CommandListener.
....
Phát triển game đơn giãn trên Mobile(P2)
Ở phần này, ta tìm hiểu về các thành phần giao diện người dùng(UI) có sẵn trong J2ME nhằm tạo ra sự tương tác giữa người dùng với điện thoại, đây là vấn đề quan trọng bởi kích thước của màn hình điện thoại được giới hạn. J2ME cung cấp đặc tả MIDP chứa các thành phần giao diện đồ họa, hiện nay đã có rất nhiều phiên bản MIDP 3.0, tuy nhiên trong bài này tôi chỉ xét MIDP 2.0. Ta cùng tìm hiểu sơ đồ phân lớp của nó:
MIDP 2.0 cung cấp các lớp UI trong một gói javax.microedition.lcdui, trong đó lcdui là viết tắt của liquid crystal display user interface(LCD UI). Để show một phần tử UI lên màn hình, bạn phải sử dụng một lớp Displayable. Ví dụ, một lớp Displayable có thể có một title, một ticker, và các command liên kết với nó.
Lớp Display quản lý những cái gì hiển thị lên màn hình. Phương thức static getDisplay(MIDlet midlet) cho phép bạn truy cập vào Display của MIDlet. Sau đó, bạn sử dụng phương thức setCurrent(Displayable element) để lựa chọn đối tượng nào extend từ Displayable được hiển thị lên màn hình. Tại một thời điểm, chỉ có một đối tượng Displayable được hiển thị trên màn hình. Hãy xem lại ví dụ từ bài trước:
Display.getDisplay(this).setCurrent(alert);
Trong MIDP, nó phân chia các lớp thành 2 thành phần: các thành phần giao diện cấp cao0 và cấp thấp0.
Các thành phần high-level được thực thi thông qua các lớp extends từ class Screen, còn các thành phần low-level được thực thi thông qua các lớp extends từ class Canvas. Và tất cả chúng đều extends từ class Displayable.
Bất kỳ một ứng dụng nào cũng có thể kết hợp cả các thành phần giao diện high-level và low-level để phục vụ cho mục đích của ứng dụng. Ví dụ, trong một ứng dụng game, List và Form có thể được sử dụng để chọn lựa hay cấu hình game, trong khi Canvas (hay GameCanvas) được sử dụng cho các thành phần tương tác của game như tạo nhân vật chuyển động, ảnh background.
Lớp Command:
Một MIDlet tương tác với người dùng thông qua các Command. Một Command tương đương với một menu item trong một ứng dụng thông thường, và nó chỉ có thể kết hợp với một phần tử UI Displayable. Lớp Displayable cho phép người dùng attacth một Command bằng cách sử dung phương thức addCommand(Command command). Một đối tượng Displayable có thể cón nhiều Command bên trong nó.Lớp Command được nắm giữ các thông tin về command. Thông tin này được đóng gói trong 4 thuộc tính: short label, optional long label, command type và priority. Ví dụ, sử dụng lớp Command để tạo ra đối tượng command thông qua cung cấp các giá trị trong Constructor:
// adds 1 command thoat len MIDlet
comExit = new Command("Exit", Command.EXIT, 1);
Lưu ý rằng các command không thay đổi khi chúng được tạo ra.
Nếu xác định command type, bạn có thể cho phép thiết bị chạy MIDlet ánh xạ(map) bất kỳ phím định sẵn nào trên thiết bị vào command đó. Ví dụ, một command với kiểu OK được ánh xạ vào phím OK của thiết bị. Trong MIDP 2.0, nó có sẵn các kiểu command sau: BACK, CANCEL, EXIT, HELP, ITEM, SCREEN và STOP. Kiểu SCREEN liên quan đến một command được map trong ứng dụng cho màn hiền hiện thời. Cả SCREEN và ITEM không có bất kỳ các phím được ánh xạ trên thiết bị.Để nhận được phản hồi từ người dùng, bạn cần phải listen từ các command, điều này được thực hiện thông qua thực thi giao diện CommandListener. Trong ví dụ Hello World, Interface được thực thi thông qua phương thức commandAction().
Ví dụ:
alert.addCommand(comExit);
// adds 1 listener to the form
alert.setCommandListener(this);
[...">
publicvoid commandAction(Command cmd, Displayable display) {
if (cmd == comExit) {
exit();
}
}
Như bạn thấy, phương thức commandAction() nhận 2 tham số: đó là Command được thực thi và Displayable đang được hiển thị hiện tại.
Giao diện người dùng cấp cao0:
Các API của giao diện người dùng cấp cao được thiết kế cho các ứng dụng kinh doanh của các khách hàng mà các thành phần client của nó chạy trên các thiết bị di động. Đối với các loại ứng dụng này, tính linh động(portability) qua nhiều thiết bị là rất quan trọng. Để đạt được tính linh động như vậy, các API của nó ở mức cao được trừu tượng hóa(abstraction) và cung cấp ít các điều khiển hơn các look anh feel. Điều này cho phép thiết bị sử dụng look and feel giao diên người dùng tự nhiên(native) để hiển thị thay thế cho các thành phần giao diện MIDP high-level. Điều này có nghĩa khi một môt ứng dụng được viết bằng API high-level, nó look and feel một cách tự động sử dụng look and feel của thiết bị mà ứng dụng đang chạy, còn đối với người dùng cuối, điều này cung cấp sự tương tác với người dùng một cách liền mạch, đó là ứng dụng MIDP làm việc như là các ứng dụng native trên thiết bị.
Tóm lại, khi sử dụng API high-level, bạn có thể:
•Vẽ để được hiển thị bởi hệ thống phần mềm của thiết bị. Ứng dụng không định nghĩa giao diện trực quan như hình dáng, màu sắc… của các thành phần high-level....
123 ... 7»
3"/>
Từ khóa: Lý, thuyết, j2me
Lên trên Có thể bạn quan tâm
Chia sẻ:facebookYahoo Zing TwitterGoogle[sms]G+GO
BB Code:
Link:
2