📄 transport.java
字号:
import java.util.Random;
import javax.microedition.lcdui.Graphics;
//import javax.microedition.lcdui.game.Sprite;
public class Transport extends Actor{
public Transport() {
world = World.getInstance();
}
public void initData(){
//transportImage = new CImage("/bombPlane.png");
transportImage = new CImage("/largePlane.png");
setNotUsed(true);
initXYSpeed();
}
public void clean(){
transportImage.clean();
transportImage = null;
}
public void changeMyState() {
if (isNotUsed() == true) {
return;
}
int[] data = getIProcessData();
if (processCount < getIProcess()) {
if (++processTimeCount <= data[processCount * 3 + 0]) {
int orbitType = data[processCount * 3 + 1];
int bulletType = data[processCount * 3 + 2];
updateXY(orbitType, bulletType);
} else {
processCount++;
processTimeCount = 0;
}
}
if ((getIPosY() >> 8) < -48) {
setNotUsed(true);
}
}
public void updateXY(int orbitType, int bulletType) {
int xPos = getIPosX();
int yPos = getIPosY();
int speed = getSpeed() << 8;
// System.out.println("orbitType====" + orbitType);
switch (orbitType) {
case 3: // 顺时针45度向上
setIPosX(xPos + speed);
setIPosY(yPos - speed);
break;
case 24: // 屏幕后
setIPosY(yPos - speed);
break;
case 0: // 发射子弹
if (processTimeCount == 1) {
type[0] = Tool.abs(random.nextInt() % 3);
while (true) {
type[1] = Tool.abs(random.nextInt() % 3);
if (type[0] != type[1]) {
break;
}
}
fire(type[0], bulletType, xPos, yPos + (48 << 8), xSpeed[0],
ySpeed[0]);
fire(type[1], bulletType, xPos, yPos + (48 << 8), xSpeed[1],
ySpeed[1]);
}
break;
}
}
private void fire(int type, int bulletType, int xPos, int yPos, int xSpeed,
int ySpeed) {
Bullet bullet = world.newBullet(bulletType, xPos, yPos, xSpeed, ySpeed);
bullet.setCurrentFrame(-1);
switch (type) {
case 0:
bullet.setAction((byte) 0);
break;
case 1:
bullet.setAction((byte) 1);
break;
case 2:
bullet.setAction((byte) 2);
break;
}
}
public void draw(Graphics graphics) {
if (isNotUsed() == true) {
return;
}
transportImage.drawImage(graphics, getIPosX() >> 8, getIPosY() >> 8,
GameConstant.CENTER);
// transportImage.drawRegionImage(graphics, 0, 0, 46, 95,
// Sprite.TRANS_MIRROR, getIPosX() - 1, getIPosY(),
// GameConstant.LEFTCENTER);
}
private void initXYSpeed(){
xSpeed = Tool.getXSpeedByAngle(315,2,90,5);
ySpeed = Tool.getYSpeedByAngle(315,2,90,5);
}
private CImage transportImage;
private World world;
private Random random = new Random();
private int [] type = new int[2];
private int [] xSpeed;
private int [] ySpeed;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -