Sprite in J2ME Game
Saturday, 29. August 2009, 22:48:50
Một ví dụ đơn giản về cách dùng Sprite trong Mobile Game:
ExampleGameCanvas.java
Mã:
package com.game;import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;/** * * @author SmallCode_ws */public class ExampleGameCanvas extends GameCanvas implements Runnable { private boolean isPlay; // Game Loop runs when isPlay is true private long delay; // To give thread consistency private int currentX, currentY; // To hold current position of the 'X' private int width; // To hold screen width private int height; // To hold screen height // Sprites to be used private Sprite sprite; private Sprite nonTransparentSprite; // Constructor and initialization public ExampleGameCanvas() throws Exception { super(true); width = getWidth(); height = getHeight(); currentX = width / 2; currentY = height / 2; delay = 20;try{// Load Images to Sprites Image image = Image.createImage("/1.png"); sprite = new Sprite (image,80,80); Image imageTemp = Image.createImage("/2.png"); nonTransparentSprite = new Sprite (imageTemp,80,80); }catch(Exception e){ System.out.println("Image Load error"); } }// Automatically start thread for game loop public void start() { isPlay = true; Thread t = new Thread(this); t.start(); }public void stop() { isPlay = false;} // Main Game Loop public void run() { Graphics g = getGraphics(); while (isPlay == true) { input(); drawScreen(g); try { Thread.sleep(delay); } catch (InterruptedException ie) {} }}// Method to Handle User Inputs private void input() { int keyStates = getKeyStates(); sprite.setFrame(0); // Left if ((keyStates & LEFT_PRESSED) != 0) { currentX = Math.max(0, currentX - 1); sprite.setFrame(1); }// Right if ((keyStates & RIGHT_PRESSED) !=0 ) if ( currentX + 5 < width) { currentX = Math.min(width, currentX + 1); sprite.setFrame(3); }// Up if ((keyStates & UP_PRESSED) != 0) { currentY = Math.max(0, currentY - 1); sprite.setFrame(2); }// Down if ((keyStates & DOWN_PRESSED) !=0) if ( currentY + 10 < height) { currentY = Math.min(height, currentY + 1); sprite.setFrame(4); }}// Method to Display Graphics private void drawScreen(Graphics g) { g.setColor(0xFF0000); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0x0000ff); // display sprites sprite.setPosition(currentX,currentY); sprite.paint(g); nonTransparentSprite.paint(g); flushGraphics(); }}
GCanvas.java
Mã:
package com.game; import javax.microedition.midlet.*;import javax.microedition.lcdui.*; /** * @author SmallCode_ws */public class GCanvas extends MIDlet { private Display display; public void startApp() { try {display = Display.getDisplay(this);ExampleGameCanvas gameCanvas = new ExampleGameCanvas();gameCanvas.start();display.setCurrent(gameCanvas);} catch (Exception ex) {System.out.println(ex);} }public Display getDisplay() { return display; } public void pauseApp() { } public void destroyApp(boolean unconditional) { exit(); } public void exit() { System.gc(); destroyApp(false); notifyDestroyed(); }}
View more random threads:
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...