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.java
Collisions,
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();