spMan = new ManSprite(Image.createImage("/man.png")); spApple = new AppleSprite(Image.createImage("/apple.png")); spCube = new CubeSprite(Image.createImage("/cube.png[r]
(1)Giáo viên : Tr nh Th Vân Anhị ị
L P TRÌNH J2ME CHO THI T B DI Đ NGẬ Ế Ị Ộ
L P TRÌNH J2ME CHO THI T B DI Đ NGẬ Ế Ị Ộ
PH N 2Ầ
PH N 2Ầ
(2)2
3.Các thành ph n giao di n m c th p c a ng d ng MIDPầ ệ ứ ấ ủ ứ ụ
3.Các thành ph n giao di n m c th p c a ng d ng MIDPầ ệ ứ ấ ủ ứ ụ
Các hàm API c p cao cho ta t o giao di n ng d ng theo chu n, hàm ấ ạ ệ ứ ụ ẩ
API c p th p cho ta th hi n ý tấ ấ ể ệ ưởng c a Canvas Graphics l p ủ ớ
chính c a hàm API c p th p B n làm t t c công vi c b ng tay Canvas ủ ấ ấ ạ ấ ả ệ ằ
m t khung v mà ngộ ẽ ười phát tri n v lên thi t b trình bày x lý s ki n L p ể ẽ ế ị ử ự ệ ớ
Graphics cung c p công c v nh drawRoundRect() drawString() ấ ụ ẽ ư
L p Canvasớ :cung c p m t khung v t o giao di n tùy bi n ngấ ộ ẽ ạ ệ ế ười dùng Đa s ố
phương th c l p đ x lý s ki n, v nh chu i lên thi t b hi n th ứ ớ ể ử ự ệ ẽ ả ỗ ế ị ể ị
Trong ph n s bao g m m c:ầ ẽ ồ ụ • H th ng t a đệ ố ọ ộ
• T o đ i tạ ố ượng Canvas
• V lên đ i tẽ ố ượng Canvas
• X lý s ki n hành đ ngử ự ệ ộ • X lý s ki n phím nh nử ự ệ ấ
(3)3
H th ng tr c t a đ , t o m t đ i tệ ố ụ ọ ộ ạ ộ ố ượng Canvas H th ng tr c t a đ , t o m t đ i tệ ố ụ ọ ộ ạ ộ ố ượng Canvas
H t a đ cho l p Canvas: tâm t a đ m trái c a thi t b Tr x tăng d n v ph i, ệ ọ ộ ọ ộ ể ủ ế ị ị ầ ề ả
tr y tăng d n xu ng dị ầ ố ưới Đ dày bút v m t m nh.ộ ẽ ộ ể ả
Các phương th c sau s giúp xác đ nh chi u r ng chi u cao c a canvas:ứ ẽ ị ề ộ ề ủ • int getWidth(): xác đ nh chi u r ng c a canvasị ề ộ ủ
• int getHeight (): xác đ nh chi u cao c a canvasị ề ủ
Đ u tiên t o m t l p th a k t l p Canvasầ ộ ế
class TestCanvas extends Canvas implements CommandListener {
private Command cmdExit;
display = Display.getDisplay(this);
cmdExit = new Command("Exit", Command.EXIT, 1); addCommand(cmdExit);
setCommandListener(this);
protected void paint(Graphics g) {
// Draw onto the canvas
g.setColor(255, 255, 255); // Set background color to white g.fillRect(0, 0, getWidth(), getHeight()); // Fill the entire canvas
} }
TestCanvas canvas = new TestCanvas(this);
(4)4
S ki n hành đ ngự ệ ộ
S ki n hành đ ngự ệ ộ
M t Canvas có th x lý Command Chúng ta có th x lý s ki n Command ộ ể ể ự ệ
thành ph n Canvas cung cách nh thành ph n khácầ ầ
Mã phím
Trường h p x lý hành đ ng c a phím m m, m t Canvas có th truy c p đ n 12 mã ợ ộ ủ ề ộ ể ậ ế phím Nh ng mã đữ ược đ m b o luôn có b t kỳ thi t b MIDP nàoả ả ấ ế ị
KEY_NUM0 KEY_NUM1 KEY_NUM2 KEY_NUM3 KEY_NUM4 KEY_NUM5 KEY_NUM6 KEY_NUM7 KEY_NUM8 KEY_NUM9 KEY_STAR KEY_POUND
Năm phương th c đ x lý mã phím là:ứ ể
void keyPressed(int keyCode); void keyReleased(int keyCode); void keyRepeat(int keyCode); String getKeyName(int keyCode);
Ví du sau: Xu ly cac phim, viet ma phim – KeyEventsKeyEvents,
(5)5
Các hành đ ng x lý trò ch iộ ử ơ
Các hành đ ng x lý trò ch iộ ử ơ
MIDP thường đượ ục s d ng đ t o trò ch i n n Java Các h ng s sau ể ạ ơ ề ằ ố
được đ nh nghĩa đ x lý s ki n có liên quan đ n trò ch i MIDPị ể ử ự ệ ế ơ
UP
DOWN LEFT RIGHT FIRE
GAME_A GAME_B GAME_C GAME_D
Đ n gi n giá tr đơ ả ị ược ánh x thành phím mũi tên ch hạ ỉ ướng c a ủ
thi t b , nh ng không ph i t t c thi t b di đ ng đ u có nh ng giá tr ế ị ư ả ấ ả ế ị ộ ề ữ ị
N u m t thi t b di đ ng thi u phím mũi tên hành đ ng c a trị ch i s ế ộ ế ị ộ ế ộ ủ ơ ẽ
được ánh x vào nút b m, ví d phím trái đạ ấ ụ ược ánh x vào phím s 2, phím ạ ố
(6)33
Ví d : ụ
Ví d : ụ Collisions, CollisionCanvas.java Collisions, (3)(3)
public CollisionCanvas(Collisions midlet) { // Gamecanvas constructor super(true);
this.midlet = midlet;
Try {// Nonanimated sprites
spMan = new ManSprite(Image.createImage("/man.png")); spApple = new AppleSprite(Image.createImage("/apple.png")); spCube = new CubeSprite(Image.createImage("/cube.png")); spStar = new StarSprite(Image.createImage("/star.png")); // Animated sprite
spSpiral = new AnimatedSprite(Image.createImage("/spiral.png"), FRAME_WIDTH, FRAME_HEIGHT);
// Change the reference pixel to the middle of sprite
spSpiral.defineReferencePixel(FRAME_WIDTH / 2, FRAME_HEIGHT / 2); // Center the sprite on the canvas
// (center of sprite is now in center of display)
spSpiral.setRefPixelPosition(getWidth() / 2, getHeight() / 2);
// Create and add to layer manager
lmgr = new LayerManager(); lmgr.append(spSpiral);
(7)34
Ví d : ụ
Ví d : ụ Collisions, Collisions.javaCollisions,
public class Collisions extends MIDlet implements CommandListener {
protected Display display; // Reference to display private CollisionCanvas canvas; // Game canvas private Command cmExit; // Exit command
public Collisions() {
display = Display.getDisplay(this);
if ((canvas = new CollisionCanvas(this)) != null) { // Create game canvas and exit command cmExit = new Command("Exit", Command.EXIT, 1);
canvas.addCommand(cmExit); canvas.setCommandListener(this); }}
public void startApp() {
if (canvas != null) {
display.setCurrent(canvas); canvas.start();