📄 microtanksprite.java
字号:
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
/*
* 我方坦克类 具有功能:我方子弹 移动方向和移动量的控制 碰到障碍物时的处理 真正的移动操作
*/
public class MicroTankSprite extends Sprite
{
private int mDirection;
private int mKX, mKY;
private int x, y;
private int delta3;
private int mLastDelta;
public static BulletsSprite bullets;//我方坦克的子弹,它也是一个精灵类
private static final int[] kTransformLookup = { Sprite.TRANS_MIRROR_ROT270,
Sprite.TRANS_MIRROR_ROT270, Sprite.TRANS_ROT90, Sprite.TRANS_NONE,
Sprite.TRANS_ROT180 };
public MicroTankSprite(Image image, int frameWidth, int frameHeight)
{
super(image, frameWidth, frameHeight);
defineReferencePixel(frameWidth / 2, frameHeight / 2);//自定义我方坦克的参考点
try
{
bullets = createBullets();// 创建了我方坦克时还创建了子弹
bullets.setVisible(false);//开始子弹不可见
// MicroTankCanvas.mLayerManager.append(bullets);
}
catch (IOException ioe)
{
}
catch (Exception e)
{
}
}
// ------------------创建我方子弹---------------
public BulletsSprite createBullets() throws IOException
{
Image image = Image.createImage("/bullets.png");
return new BulletsSprite(image, 3, 3);
}
// ----------------移动方向和移动量的控制 此方法由此类的对象在外部类中调用------------------------
public void forward(int delta, int delta2)
{
if (delta2 == 1)//delta2这一变量真妙,即可以做移动方向处理,要可以用来处理坦克的朝向
{
fineMove(delta, 0);
}
else if (delta2 == 2)
{
fineMove(delta, 0);
}
else if (delta2 == 3)
{
fineMove(0, delta);
}
else if (delta2 == 4)
{
fineMove(0, delta);
}
setTransform(kTransformLookup[delta2]);//根据外部按键时所传入的不同方向参数使坦克有相应的调头
delta3 = delta2;// 把最后一次的方向取值赋给delta3再传到forward()方法,且让它反方向运动,
mLastDelta = delta;// 记录下最后的移动量和方向
}
// ------------------碰到障碍物时的处理,注意,此方法只处理碰撞,不作碰撞的检测,也由此类的对象调用------------
public void undo()
{
forward(-mLastDelta, delta3);//delta3保存有最近一次的坦克方向,-mLastDelta为反方向移动
System.out.println("我方坦克 " + -mLastDelta + " " + delta3);
}
//-------------真正的移动操作,它的方向和移动量由传进来的参数决定 在本类中调用------------------
private void fineMove(int kx, int ky)
{
x = getX();
y = getY();
x += kx;
y += ky;
if (y < 0 || y > 240)
{
y -= ky;
}
if (x < 0 || x > 232)
{
x -= kx;
}
setPosition(x, y);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -