📄 mysprite.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class MySprite extends Sprite implements Runnable{
protected String name;
protected boolean isDead;
protected Vector msgVC; //对话内容
protected ChatArea chatArea; //对话触发区
protected Box collisionRectangle; //碰撞区
protected boolean haveCollision;
protected int msgPoint; //对话指针
protected Box prevMoveArea; //预移动区域,用来判断障碍
protected boolean walking; //正在走动中
protected int lastMoveX,lastMoveY;
protected int minX,minY,maxX,maxY;
public int currentDirect;
public boolean isMainRole;
protected boolean continueFrame; //不停换祯,如火焰
protected boolean canCrossBlock;
private long startDelay; //开始间隔时间
private long delay; //坐标生成间隔时间
private MySprite traceTarget;
private int zIndex;
public static int DIR_UP=1;
public static int DIR_DOWN=2;
public static int DIR_LEFT=3;
public static int DIR_RIGHT=4;
protected PointCreator pointCreator;
protected int speed;
protected boolean canMove;
protected boolean canChat;
protected boolean isAutoMoving; //自动移动中
private boolean canTouchMine; //会遇到地雷
private int mineTimeCounter; //遇雷倒计时,走一步计一次,到0触雷
public boolean isStatic; //是静态NPC,始终在内存里,如发任务的NPC
private int life; //生命
private int maxLife; //最大生命
private int magic; //魔法
private int maxMagic; //最大魔法
private int exp; //经验
private int nextExp; //下次升级经验
private int lv; //级别
private int power; //力量
private int totalPower; //综合攻击力
private int defence; //身体防御力
private int totalDefence; //综合防御力
private int actSpeed; //敏捷
private int totalActSpeed; //综合敏捷
private int money;
//升级信息
private String upLv;
private String upMaxLife;
private String upMaxMagic;
private String upPower;
private String upDefence;
private String upActSpeed;
private Vector equipVC; //已装备的物品库
private Vector usedMatVC; //药品库
private Vector equipMatVC; //装备类物品库
private Vector skillVC; //技能库
private Vector missionVC; //任务库
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public int getActSpeed() {
return actSpeed;
}
public void setActSpeed(int actSpeed) {
this.actSpeed = actSpeed;
}
public int getDefence() {
return defence;
}
public void setDefence(int defence) {
this.defence = defence;
}
public int getExp() {
return exp;
}
public void setExp(int exp) {
this.exp = exp;
}
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
public int getLv() {
return lv;
}
public void setLv(int lv) {
this.lv = lv;
}
public int getMagic() {
return magic;
}
public void setMagic(int magic) {
this.magic = magic;
}
public int getMaxLife() {
return maxLife;
}
public void setMaxLife(int maxLife) {
this.maxLife = maxLife;
}
public int getMaxMagic() {
return maxMagic;
}
public void setMaxMagic(int maxMagic) {
this.maxMagic = maxMagic;
}
public int getNextExp() {
return nextExp;
}
public void setNextExp(int nextExp) {
this.nextExp = nextExp;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
public int getZIndex() {
return zIndex;
}
public void setZIndex(int index) {
zIndex = index;
}
public MySprite getTraceTarget() {
return traceTarget;
}
public void setTraceTarget(MySprite traceTarget) {
this.traceTarget = traceTarget;
}
public long getDelay() {
return delay;
}
public long getStartDelay() {
return startDelay;
}
public void setDelay(long delay) {
this.delay = delay;
}
public void setStartDelay(long startDelay) {
this.startDelay = startDelay;
}
public boolean isCanCrossBlock() {
return canCrossBlock;
}
public void setCanCrossBlock(boolean canCrossBlock) {
this.canCrossBlock = canCrossBlock;
}
public int getMaxX() {
return maxX;
}
public int getMaxY() {
return maxY;
}
public int getMinX() {
return minX;
}
public int getMinY() {
return minY;
}
public void setMaxX(int maxX) {
this.maxX = maxX;
}
public void setMaxY(int maxY) {
this.maxY = maxY;
}
public void setMinX(int minX) {
this.minX = minX;
}
public void setMinY(int minY) {
this.minY = minY;
}
public MySprite(Image img,int w,int h)
{
super(img,w,h);
//System.out.println("MySprite.MySprite()");
init();
}
public MySprite(Sprite sp)
{
super(sp);
init();
}
private void init()
{
//System.out.println("MySprite.init()");
isDead=false;
msgPoint=0;
speed=3;
currentDirect=MySprite.DIR_DOWN;
minX=0;
minY=0;
maxX=SceneLib.scenes[SceneLib.currentSceneIndex].getGroundWidth();
maxY=SceneLib.scenes[SceneLib.currentSceneIndex].getGroundHeight();
delay=-1;
startDelay=-1;
}
public String getName()
{
return name;
}
public void setName(String name) {
this.name = name;
//System.out.println("MySprite.setName("+name+")");
}
public void setDead(boolean dead)
{
isDead=dead;
}
public boolean isDead() {
return isDead;
}
//加对话信息
public void addMsg(Msg msg) {
if(msgVC==null)msgVC=new Vector();
msgVC.addElement(msg);
msgPoint=0;
}
public void removeAllMsg()
{
if(msgVC!=null)msgVC.removeAllElements();
}
//加任务
public void addMission(Mission mission)
{
if(missionVC==null)missionVC=new Vector();
missionVC.addElement(mission);
}
public void removeMission(Mission mission)
{
missionVC.removeElement(mission);
}
public void removeAllMission()
{
missionVC.removeAllElements();
}
public Vector getMissionVC()
{
return missionVC;
}
/**
* @return Returns the msgPoint.
*/
public int getMsgPoint() {
return msgPoint;
}
/**
* @param msgPoint The msgPoint to set.
*/
public void setMsgPoint(int msgPoint) {
this.msgPoint = msgPoint;
}
//设置对话区域(相对位置)
public void setChatArea()
{
if(chatArea==null)chatArea=new ChatArea();
chatArea.setParent(this);
chatArea.x=-6;
chatArea.y=20;
chatArea.w=this.getWidth()+12;
chatArea.h=this.getHeight()-20+6;
/*
if(currentDirect==MySprite.DIR_DOWN)
{
chatArea.x=-6;
chatArea.y=this.getHeight()-8-6;
chatArea.w=this.getWidth()+12;
chatArea.h=20;
}
else if(currentDirect==MySprite.DIR_UP)
{
chatArea.x=-6;
chatArea.y=this.getHeight()-8-6;
chatArea.w=this.getWidth()+12;
chatArea.h=20;
}
else if(currentDirect==MySprite.DIR_LEFT)
{
chatArea.x=-6;
chatArea.y=this.getHeight()-8-6;
chatArea.w=this.getWidth()+12;
chatArea.h=20;
}
else if(currentDirect==MySprite.DIR_RIGHT)
{
chatArea.x=-6;
chatArea.y=this.getHeight()-8-6;
chatArea.w=this.getWidth()+12;
chatArea.h=20;
}
*/
}
//定义碰撞区
public void defineCollisionRectangle(int x, int y, int w, int h)
{
super.defineCollisionRectangle(x,y,w,h);
collisionRectangle=new Box();
collisionRectangle.x=x;
collisionRectangle.y=y;
collisionRectangle.w=w;
collisionRectangle.h=h;
}
//取得碰撞区相对角色位置box
public Box getCollisionRectangle()
{
return collisionRectangle;
}
//取得碰撞区绝对位置Box
public Box getCollisionRectanglePosition()
{
Box box=new Box(this.getX()+this.getCollisionRectangle().x,this.getY()+this.getCollisionRectangle().y,getCollisionRectangle().w,getCollisionRectangle().h);
return box;
}
//取得碰撞区
public Box getTouchBox()
{
Box box=new Box();
box.x=this.getX()+collisionRectangle.x;
box.y=this.getY()+collisionRectangle.y;
box.w=collisionRectangle.w;
box.h=collisionRectangle.h;
return box;
}
//设置是否可碰撞
public void setCollision(boolean collision)
{
if(collision)
{
collisionRectangle=new Box();
collisionRectangle.x=3;
collisionRectangle.y=this.getHeight()-16;
collisionRectangle.w=this.getWidth()-6;
collisionRectangle.h=16;
defineCollisionRectangle(collisionRectangle.x, collisionRectangle.y,collisionRectangle.w, collisionRectangle.h);
}
else
{
collisionRectangle=null;
}
}
public void changeDirect(int direct)
{
if(direct==DIR_UP)
{
if(currentDirect!=DIR_UP)
{
this.setFrameSequence(new int[]{3,4,5});
currentDirect=DIR_UP;
if(canChat)setChatArea();
//player1.defineCollisionRectangle(3,19,10,3);
}
}
if(direct==DIR_LEFT)
{
if(currentDirect!=DIR_LEFT)
{
this.setFrameSequence(new int[]{6,7,8});
currentDirect=DIR_LEFT;
if(canChat)setChatArea();
//player1.defineCollisionRectangle(-3,23,10,3);
}
}
if(direct==DIR_RIGHT)
{
if(currentDirect!=DIR_RIGHT)
{
this.setFrameSequence(new int[]{9,10,11});
currentDirect=DIR_RIGHT;
if(canChat)setChatArea();
//player1.defineCollisionRectangle(9,23,10,3);
}
}
if(direct==DIR_DOWN)
{
if(currentDirect!=DIR_DOWN)
{
this.setFrameSequence(new int[]{0,1,2});
currentDirect=DIR_DOWN;
if(canChat)setChatArea();
//player1.defineCollisionRectangle(3,34,10,3);
}
}
}
public void initDirect()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -