⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 microtankcanvas.java

📁 Java ME手机应用开发大全一书的配套光盘上的源码
💻 JAVA
字号:
import java.io.IOException;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class MicroTankCanvas extends GameCanvas implements Runnable {
  private volatile boolean mTrucking;
  private MicroTankSprite mTank;

  //声明图层管理对象
  private LayerManager mLayerManager;
  //构造函数
  public MicroTankCanvas() throws IOException {
    super(true);//抑制键盘
    //创建坦克精灵对象
    mTank = createTank();
	//设置精灵的位置
    mTank.setPosition(0, 24);
   
    //创建图层管理对象
    mLayerManager = new LayerManager();
	//将精灵添加到图层管理中
    mLayerManager.append(mTank);
    
  }
  //定义创建代表坦克的游戏精灵对象的方法
  private MicroTankSprite createTank() throws IOException {
	  //加载Sprite的源图像
    Image image = Image.createImage("/tank.png");
    return new MicroTankSprite(image, 32, 32);
  }

 
  //启动线程
  public void start() {
    mTrucking = true;
    Thread t = new Thread(this);
    t.start();
  }
  
  public void run() {
    Graphics g = getGraphics();
    //设置游戏循环时间
    int timeStep = 80;
    
    while (mTrucking) {
      long start = System.currentTimeMillis();
      
      
      input();
      render(g);
      
      long end = System.currentTimeMillis();
      int duration = (int)(end - start);
      
     
      
      if (duration < timeStep) {
        try { Thread.sleep(timeStep - duration); }
        catch (InterruptedException ie) { stop(); }
      }
    }
  }
  
  
  //响应用户的按键事件
  private void input() {
    int keyStates = getKeyStates();
    if ((keyStates & LEFT_PRESSED) != 0) mTank.turn(-1);
    else if ((keyStates & RIGHT_PRESSED) != 0) mTank.turn(1);
    else if ((keyStates & UP_PRESSED) != 0) mTank.forward(2);
    else if ((keyStates & DOWN_PRESSED) != 0) mTank.forward(-2);
  }
  //绘制屏幕
  private void render(Graphics g) {
    int w = getWidth();
    int h = getHeight();
    //填充屏幕
    g.setColor(0xffffff);
    g.fillRect(0, 0, w, h);
    
    int x = (w - 160) / 2;
    int y = (h - 160) / 2;
    //绘制图层
    mLayerManager.paint(g,x,y);
    g.setColor(0x000000);
    g.drawRect(x, y, 160, 160);
    //绘制精灵到屏幕上
    flushGraphics();
  }
  public void stop() {
    mTrucking = false;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -