📄 largeplane.java
字号:
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class LargePlane extends Actor {
public LargePlane(){
world = World.getInstance();
}
public void initData() {
try {
LargePlaneImage = Image.createImage("/largePlane.png");
} catch (IOException e) {
e.printStackTrace();
}
initXYSpeed();
}
public void clean() {
LargePlaneImage = 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];
//System.out.println("bulletType========" + bulletType);
updateXY(orbitType,bulletType);
} else {
processCount++;
processTimeCount = 0;
}
}
}
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 12: // 顺时针向下
setIPosY(yPos + speed);
break;
case 18: // 屏幕向左
setIPosX(xPos - speed);
break;
case 6: // 向右
setIPosX(xPos + speed);
break;
case 9: // 顺时针135度
setIPosX(xPos + speed);
setIPosY(yPos + speed);
break;
case 3: // 顺时针45度向上
setIPosX(xPos + speed);
setIPosY(yPos - speed);
break;
case 24: // 屏幕后
setIPosY(yPos - speed);
break;
case 15: // 顺时针225度向下
setIPosX(xPos - speed);
setIPosY(yPos + speed);
break;
case 21: // 顺时针315度向上
setIPosX(xPos - speed);
setIPosY(yPos - speed);
break;
case 25:// 向下
setIPosY(yPos + (2 << 8));
break;
case 0: //发射子弹
if(processTimeCount == 1){
fire(bulletType,xPos,yPos);
}
break;
}
}
public void draw(Graphics graphics) {
graphics.drawImage(LargePlaneImage, getIPosX() >> 8, getIPosY() >> 8,
GameConstant.CENTER);
}
public void fire(int bulletType,int xPos,int yPos){
switch(bulletType){
case 2: //普通子弹
for (int idx = 0; idx < 5; idx++) {
world.newBullet(bulletType, xPos, yPos + (16 << 8),
xSpeed[idx], ySpeed[idx]);
}
break;
case 5: // 空雷
// world.newBullet(bulletType, xPos, yPos + (16 << 8), 0,
// -(2 << 8));
// break;
}
}
public void initXYSpeed(){
//已306度到216度的角
xSpeed = Tool.getXSpeedByAngle(306,5,18,4);
ySpeed = Tool.getYSpeedByAngle(306,5,18,4);
}
public boolean isCollide(Actor planeActor, Actor largeActor) {
// rMLeftX 为矩形的左上X坐标
int rMLeftX = (planeActor.getIPosX() - (planeActor.getIWidth() >> 1)) >> 8;
// rMLeftY 为矩形的左上Y坐标
int rMLeftY = (planeActor.getIPosY() - planeActor.getIHeight()) >> 8;
// 贯穿图片中间的矩形x,y,width,height
int rCenterLeftX = (largeActor.getIPosX() - (10 << 8)) >> 8;
int rCenterLeftY = (largeActor.getIPosY() - (15 << 8)) >> 8;
int iCenterWidth = 20;
int iCenterHeight = 35;
// 贯穿图片左右的矩形x,y,width,height
int rBottomLeftX = (largeActor.getIPosX() - (41 << 8)) >> 8;
int rBottomLeftY = largeActor.getIPosY() >> 8;
int rBottomWidth = 83;
int rBottomHeight = 9;
if (Tool.isIntersectingRect(rMLeftX, rMLeftY,
planeActor.getIWidth() >> 8, planeActor.getIHeight() >> 8,
rCenterLeftX, rCenterLeftY, iCenterWidth, iCenterHeight)
|| Tool.isIntersectingRect(rMLeftX, rMLeftY, planeActor
.getIWidth() >> 8, planeActor.getIHeight() >> 8,
rBottomLeftX, rBottomLeftY, rBottomWidth,
rBottomHeight)) {
return true;
}
return false;
}
private Image LargePlaneImage;
private World world;
private int [] xSpeed = new int[5];
private int [] ySpeed = new int [5];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -