📄 aircraft.java
字号:
import javax.microedition.lcdui.Graphics;
public class Aircraft extends Actor{
public Aircraft(){
planeActor = BattlePlaneActor.getInstance();
}
public void initData(){
aircraftImage = new CImage("/plAircraft.png");
}
public void clean() {
aircraftImage.clean();
aircraftImage = null;
}
public void changeMyState(){
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;
}
}
}
public void draw(Graphics graphics) {
aircraftImage.drawImage(graphics, getIPosX() >> 8, getIPosY() >> 8,
GameConstant.CENTER);
}
public void updateXY(int orbitType,int bulletType) {
int xPos = getIPosX();
int yPos = getIPosY();
int speed = getSpeed() << 8;
switch (orbitType) {
case 15: // 顺时针225度向下
setIPosX(xPos - speed);
setIPosY(yPos + speed);
break;
case 9: // 顺时针135度
setIPosX(xPos + speed);
setIPosY(yPos + speed);
break;
case 26: // 跟踪主角
if(processTimeCount == 1){
getXYSpeed(speed);
}
if (processTimeCount % 20 == 0) {
getXYSpeed(speed);
}
setIPosX(xPos + xSpeed);
setIPosY(yPos + ySpeed);
break;
case 12: // 顺时针向下
setIPosY(yPos + speed);
break;
}
}
public void getXYSpeed(int speed) {
if (planeActor.getIPosY() > getIPosY()) {
// 距离
int planeXpos = planeActor.getIPosX() >> 8;
int planeYpos = planeActor.getIPosY() >> 8;
int aircraftXpos = getIPosX() >> 8;
int aircraftYpos = getIPosY() >> 8;
int dis = Tool.sqrt(Tool.getDistance(planeXpos, planeYpos,
aircraftXpos, aircraftYpos));
xSpeed = speed * (planeXpos - aircraftXpos) / dis;
ySpeed = speed * (planeYpos - aircraftYpos) / dis;
}
}
private int xSpeed = 0; //x方向移动的速度
private int ySpeed = 0; //y方向移动的速度
private CImage aircraftImage;
private BattlePlaneActor planeActor;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -