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

•Điều hướng, cuộn, và các tương tác nguyên thủy khác với các thành phần giao diện người dùng được thực hiện bởi thiết bị. Tuy nhiên, ứng dụng không nhận biết được các tương tác này.
•Ứng dụng không thể truy cập vào các kỹ thuật input cụ thể, như các phím nhấn cụ thể nào đó.
Alert:
Ứng dụng Hello World sử dụng một alert. Phần tử này đại diện cho một màn hình(Screen) dùng để show dữ liệu đến người dùng và đợi một thời gian trước khi xử lý đối tượng Displayable tiếp theo. Một Alert thì có thể chứa môt chuỗi text và một image.Thông thường, Alert được sử dụng để thông báo lỗi hay các ngoại lệ khác.
TextBox:
Kế thừa từ lớp Screen, cho phép người dùng nhập và chỉnh sửa text. Lớp này có thể được cấu hình để thích nghi với các nhu cầu của bạn.Bạn có thể giới hạn maximum các ký tự hiển thị trong TextBox. Ngoài ra, bạn có thể ràng buộc các kiểu nhập cho TextBox bằng cách sử dụng các flag được định nghĩa trong lớp TextField. Có 6 ràng buộc(constrain) để giới hạn nội dung hiển thị, đó là: ANY, EMAILADRR, NUMBERIC, PHONENUMBER, URL và DECIMAL. Có 6 ràng buộc ảnh hưởng tới kiểu nhập: PASSWORD, UNEDITABLE, SENSITIVE, NON_PREDICTIVE, INITIAL_CAPS_WORD, và INITIAL_CAPS_SENSITIVE. Ví dụ, chỉ cho phép địa chỉ email được phép nhập trong TextBox, bạn thiết lập flag TextField.EMAILADRR sử dụng phương thức setConstrains(), ngoài ra để kết hợp nhiều ràng buộc cùng lúc, bạn sử dụng toán tử OR giữa các flag. Ví dụ:
setConstraints(TextField.EMAILADDR | TextField.UNEDITABLE);
List:
Một List chứa một danh sách các chọn lựa. Khi List được biểu diễn trên màn hình, người dùng có thể tương tác với nó bằng cách chon lựa các phần tử, di chuyển qua lại giữa các phần tử của List. Nó có các kiểu cấu hình sau:
•Choice.EXCLUSIVE: chỉ có 1 phần tử được chọn lựa.
•Choice.MULTIPLE: có thể có nhiều phần tử được chọn lựa.
•Choice.IMPLICIT: phần tử được hightlight được chọn lựa.
Form:
Nó chứa nhiều item, bất kỳ lớp nào extends từ lớp Item để có thể được chứa trong một Form. Việc thực thi xử lý các layout, traversal, và scrolling. Nội dung của Form có thể được cuộn lại với nhau.
Các loại Item có thể được thêm vào trong Form:
StringItem: là một label và không cho phép người dùng sửa lên nó. Item này có thể chứa một tiêu đề và một text, và cả hai đều có thể null.
DateField: cho phép người dùng nhập ngày date/time một trong 3 dạng sau: DATE, TIME và DATE_TIME.
TextField: Tương tự như TextBox.
ChoiceGroup: Tương tự như List.
Gauge: sử dụng để mô phỏng process bar, tuy nhiên nó có thể sử dụng trong kiểu tương tác bởi người dùng, ví dụ nếu bạn muốn dùng nó để show một Volume Control.
ImageItem: Nắm giữ một image.
CustomItem: là một lớp ảo abstract cho phép các subclass tạo ra giao diện riêng, tương tác riêng và cơ chế thông báo riêng của nó. Nếu bạn muốn một phần tử UI khác so với các phần tử được cung cấp thì bạn có thể tạo ra subclass.
Giao diện người dùng cấp thấp0:
Các API của low-level user interface( như lớp Canvas) được thiết kế cho các ứng dụng cần sự sắp đặt và điều khiển các phần tử graphics một cách chính xác cũng như truy cập vào các low-level input event. Ví dụ điển hình là game board, một chart object hay một graph. Sử dụng low-level user interface, một ứng dụng có thể:
•Kiểm soát những gì được vẽ trên màn hình.
•Điều khiển được các sự kiện primitive như các sự kiện nhấn phím(key press) và nhả phím(key release)
•Truy cập vào cụ thể từng phím và các thiệt bị đầu vào khác.
Ngoài ra, trong MIDP 2.0 còn cung cấp javax.microediton.lcdui.game. Gói này bao gồm 5 class dùng để thiết kế cho các game, đó là : GameCanvas, LayerManger, Layer, Sprite và TiledLayer. Bạn có thể tìm hiểu phần này sau.
Ví dụ về giao diện người dùng:
Đối với mỗi màn hình game, chúng ta tạo một phương thức init[ScreenName"> để khởi tạo màn hình và trả về đối tượng Displayable được tạo ra:
Đối với Main Menu, bạn sử dụng component List để biểu diễn main options. Ví dụ:
public Displayable initMainForm() {
if (mainForm == null) {
// creates a implicit List where the current element is
// the selected
mainForm = newList("Menu", List.IMPLICIT);
// append list options
mainForm.append("New Game", null);
mainForm.append("Options", null);
mainForm.append("Scores", null);
mainForm.append("Help", null);
mainForm.append("Exit", null);
// adds a select Command
comSelect = new Command("Select", Command.ITEM, 1);
mainForm.setSelectCommand(comSelect);
// adds a listener to the form
mainForm.setCommandListener(this);
}
return mainForm;
}
Đối với Menu Settings, bạn chọn phần tử Form, và thêm một đối tượng ChoiceGroup để tùy chỉnh âm thanh:
public Displayable initSettingsForm() {
// check if already created
if (settingsForm == null) {
settingsForm = new Form("Settings");
settingsForm.addCommand(initBackCommand());
settingsForm.setCommandListener(this);
// creates a choice Group for sound options
soundChoice = new ChoiceGroup("Sound", List.EXCLUSIVE);
soundChoice.append("On", null);
soundChoice.append("Off", null);
// appends the choice to the form
settingsForm.append(soundChoice);
}
return settingsForm;
}
Đối với Help Screen, bạn chọn phần tử Form với static message:
public Displayable initHelpForm() {
if (helpForm == null) {
helpForm = new Form("Help");
helpForm.append0;
helpForm.setCommandListener(this);
helpForm.addCommand(initBackCommand());
}
return helpForm;
}
Để giới thiệu High Score, bạn sử dụng một Form với các item của nó là TextField và DateField:
public Displayable initNewHighScore(int score, int pos) {
if (newHighScoreForm == null) {
newHighScoreForm = new Form("New High Score");
newHighScoreForm.setCommandListener(this);
// create items
highScoreName = newTextField("Name", "", 20, TextField.ANY);
highScoreValue = new StringItem("Score", Integer.toString(score));
highScorePosition = new StringItem("Position", Integer.toString(pos));
// create save command
highScoreSave = new Command("Save", Command.OK, 1);
// append command and itens to screen
newHighScoreForm.addCommand(highScoreSave);
newHighScoreForm.append(highScoreName);
newHighScoreForm.append(highScoreValue);
newHighScoreForm.append(highScorePosition);
}
// update score
highScoreValue.setText(Integer.toString(score));
// update pos
highScorePosition.setText(Integer.toString(pos)+1);
return newHighScoreForm;
}
Màn hình game sẽ được đề cập trong bài tiếp theo. Bây giờ, hãy tạo một phương thức giả lập kết thúc game và sử dụng nó để thay thế:
publicvoid endGame(int lifes, int score, int time) {
Displayable nextScreen = initMainForm();
String message;
if (lifes == 0) {
message = "Game Over!!";
} else {
message = "You Win!";
}
int pos = isHighScore(score);
if -1 {
nextScreen = initNewHighScore(score, pos);
}
display(new Alert(message, message, null, AlertType.INFO), nextScreen);
}
Bây giờ, tất cả các phương thức đã được tạo ra, bạn link chúng đến phương thức commandAction(). Rewrite code:
publicvoid commandAction(Command cmd, Displayable display) {
// check what screen is being displayed
if (display == mainForm) {
// check what command was used
if (cmd == comSelect) {
switch (mainForm.getSelectedIndex()) {
case (0):
// At the moment just go directly to the end of the game
endGame(1, 200, 50);
break;
case (1):
display(initSettingsForm());
break;
case (2):
display(initScoreForm());
break;
case (3):
display(initHelpForm());
break;
case (4):
exit();
break;
}
}
} elseif (display == highScoreForm) {
if (cmd == comBack) {
display(initMainForm());
}
} elseif (display == settingsForm) {
if (cmd == comBack) {
soundOn = soundChoice.getSelectedIndex() == 0;...
«1234 ... 7»
4"/>
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:
3


XtGem Forum catalog