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:
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...