📄 playertankmanager.java
字号:
package com.ipanel.games.tank;
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
public class PlayerTankManager {
/**
* 存放Sprite,而不是PlayerTank instances。
* */
private static Vector vSpriteTanks = new Vector();
private static Image imageTank = null;
private final int FRAME_SEQUENCE_UP = 0;
private final int FRAME_SEQUENCE_RIGHT = 1;
private final int FRAME_SEQUENCE_DOWN = 2;
private final int FRAME_SEQUENCE_LEFT = 3;
private static final int TANK_TOTAL = 3;
/**
* 初始化值为TANK_TOTAL。
* */
private static int TANK_REMAINED = TANK_TOTAL;
private GameLayer layer = null;
static {
// imageTank = Image.createImage("/res/TankAll.png");
}
public PlayerTankManager(GameLayer layer) {
super();
this.layer = layer;
init();
}
private void init() {
try {
imageTank = Image.createImage("/res/TankAll.png");
} catch (IOException e) {
layer
.paintException("Exception when createImage in PlayTankManager.init()!");
}
Sprite sprite = null;
for (int i = 0; i < TANK_TOTAL; i++) {
sprite = new Sprite(imageTank, 32, 32);
sprite.setFrameSequence(new int[] { FRAME_SEQUENCE_UP,
FRAME_SEQUENCE_RIGHT, FRAME_SEQUENCE_DOWN,
FRAME_SEQUENCE_LEFT });
sprite.setFrame(FRAME_SEQUENCE_UP);
vSpriteTanks.addElement(sprite);
}
}
/**
* 不采用Vector存放PlayerTank instances的方法,而是运行时刻new PlayerTank()
* 并限制其次数。
* */
PlayerTank getCurrentPlayer() {
PlayerTank tank = null;
if (TANK_REMAINED > 0) {
try {
tank = new PlayerTank(layer);
} catch (Exception e) {
layer
.paintException("Exception in PlayerTankManager.getCurrentPlayer()!");
}
TANK_REMAINED--;
}
return tank;
}
/**
* static方法,负责画出当前剩余的Sprite;注意,这和任何PlayerTank instance没有关系。
* @param X_BASE X坐标的基准
* @param Y_BASE Y坐标的基准,程序中每次绘制一个Sprite,调整Y坐标的数值。
* */
static void paintRemainedSprite(Graphics g, int X_BASE, int Y_BASE) {
Sprite sprite = null;
int Y = Y_BASE;
for (int i = 0; i < TANK_REMAINED; i++) {
sprite = (Sprite) vSpriteTanks.elementAt(i);
Y -= (sprite.getHeight() + 10);
sprite.setPosition(X_BASE, Y);
sprite.paint(g);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -