📄 battlecanvas.java
字号:
g.setFont(Style.font);
g.setColor(0x000000);
g.drawString("级别 "+GameMIDlet.mainRole.getUpLv(),x+5,y+31,Style.LT);
g.drawString("力量 "+GameMIDlet.mainRole.getUpPower(),x+5,y+31+Style.font.getHeight(),Style.LT);
g.drawString("防御 "+GameMIDlet.mainRole.getUpDefence(),x+5,y+31+Style.font.getHeight()*2,Style.LT);
g.drawString("气血 "+GameMIDlet.mainRole.getUpMaxLife(),x+5,y+31+Style.font.getHeight()*3,Style.LT);
g.drawString("精神 "+GameMIDlet.mainRole.getUpMaxMagic(),x+5,y+31+Style.font.getHeight()*4,Style.LT);
g.drawString("速度 "+GameMIDlet.mainRole.getUpActSpeed(),x+5,y+31+Style.font.getHeight()*5,Style.LT);
status=STATUS_END;
}
}
//初始化道具界面
public void initItemTab()
{
int w=100;
int h=130;
int x=(this.width-w)/2;
int y=(this.height-h)/2;
if(matTab==null)
{
matTab=new MatTab();
matTab.setTabName(new String[]{"使用道具"});
matTab.setTabIndex(0);
matTab.setBgColor(Style.bgColor2);
matTab.setHighLightColor(Style.highLight);
matTab.setPosition(x,y);
matTab.setW(w);
matTab.setH(h);
Vector matVC = GameMIDlet.mainRole.getBagMatVC(Mat.TYPE_USED);
for(int i=0; matVC!=null && i<matVC.size(); i++)
{
matTab.addElement((Mat)matVC.elementAt(i));
}
matTab.sort();
//System.out.println("数据加完");
}
}
//初始化技能界面
public void initSkillTab()
{
int w=100;
int h=130;
int x=(this.width-w)/2;
int y=(this.height-h)/2;
if(skillTab==null)
{
skillTab=new SkillTab();
skillTab.setTabName(new String[]{"技能"});
skillTab.setTabIndex(0);
skillTab.setBgColor(Style.bgColor2);
skillTab.setHighLightColor(Style.highLight);
skillTab.setPosition(x,y);
skillTab.setW(w);
skillTab.setH(h);
Vector skillVC = GameMIDlet.mainRole.getSkillVC();
for(int i=0; skillVC!=null && i<skillVC.size(); i++)
{
skillTab.addElement((Skill)skillVC.elementAt(i));
}
}
}
public void synBattleMainRole()
{
//保持战斗主角的各项数值与实际主角对象数值同步
battleMainRole.setLife(GameMIDlet.mainRole.getLife());
battleMainRole.setMagic(GameMIDlet.mainRole.getMagic());
}
public void synMainRole()
{
//保持实际主角对象数值与战斗主角的各项数值同步
GameMIDlet.mainRole.setLife(battleMainRole.getLife());
GameMIDlet.mainRole.setMagic(battleMainRole.getMagic());
}
public void run()
{
while(isPlay)
{
if(!isDrawing)
{
isDrawing=true;
//g.setColor(0x000000);
//g.fillRect(0,0,width,height);
//把死的加入尸体集合
for(int i=battleRoleVC.size()-1;i>=0;i--)
{
if((ashesVC==null || !ashesVC.contains(battleRoleVC.elementAt(i))) && ((BattleSprite)battleRoleVC.elementAt(i)).getLife()<=0)
{
if(ashesVC==null)ashesVC=new Vector();
ashesVC.addElement(battleRoleVC.elementAt(i));
//显示死去效果
showDieEffect((BattleSprite)battleRoleVC.elementAt(i));
}
}
if(backLayer!=null)backLayer.paint(g,0,0); //绘制背景
if(roleLayer!=null)roleLayer.sort();
if(roleLayer!=null)roleLayer.paint(g,0,0); //绘制角色层
//画头上的数字
for(int i=0;battleRoleVC!=null && i<battleRoleVC.size();i++)
{
BattleSprite battleSprite=(BattleSprite)battleRoleVC.elementAt(i);
if(battleSprite.damageNum!=null)
{
DamageNum dn=battleSprite.damageNum;
g.setFont(numFont);
g.setColor(dn.color);
g.drawString(String.valueOf(dn.num),dn.point.x,dn.point.y,Style.LT);
}
}
if(battleMainRole.isShowWarEffect())
{
battleMainRole.getBattleSkill().setPosition(battleMainRole.getX(),battleMainRole.getY()+10);
battleMainRole.getBattleSkill().paint(g);
}
//画血槽
drawLife();
//画手
if(status==STATUS_COMMAND_ATTACK || status==STATUS_COMMAND_SKILL_ATTACK)
{
if(battleHand!=null)battleHand.paint(g);
}
else
{
if(battleHand!=null)battleHand.stopAniHand();
}
//显示战斗命令
if((status>=BattleCanvas.STATUS_COMMAND && status<=STATUS_COMMAND_SKILL_ATTACK) && battleCommand!=null)
{
battleCommand.paint();
}
//显示道具选择界面
if((status==BattleCanvas.STATUS_COMMAND_ITEM || status==BattleCanvas.STATUS_COMMAND_ITEM_COMMAND) && matTab!=null)
{
matTab.paint(g);
}
//显示技能选择界面
if(status==BattleCanvas.STATUS_COMMAND_SKILL && skillTab!=null)
{
skillTab.paint(g);
}
//显示提示框
if(myAlert!=null && myAlert.isShow())
{
myAlert.paint(g);
}
/*
//淡入
if(fadeInBox!=null)
{
g.setColor(0x000000);
System.out.println("画黑box"+fadeInBox.x+","+fadeInBox.y+","+fadeInBox.w+","+fadeInBox.h);
g.fillRect(fadeInBox.x,fadeInBox.y,fadeInBox.w,fadeInBox.h);
}
*/
//敌全死胜利
//if(battleRoleVC.size()==1 && battleRoleVC.elementAt(0)==battleMainRole)
if(enemyVC==null || enemyVC.size()<=0)
{
//stopTurn();
showResult(true);
}
/*
if(enemy1!=null && enemy1.getLife()<=0) //敌死退出
{
stopAttack();
showResult(true);
}
*/
//主角死失败
if(battleMainRole!=null && battleMainRole.getLife()<=0)
{
//stopTurn();
showResult(false);
}
//显示升级信息
showLvupInfo();
g.setColor(0xFF0000);
if(GameMIDlet.showFPS)
{
long t2=System.currentTimeMillis();
if(t2-t1>0)g.drawString("Fps:"+runTimes*1000/(t2-t1),5,5,Style.LT);
}
runTimes++;
if(GameMIDlet.showMem)
{
g.drawString("Total memory:"+Runtime.getRuntime().totalMemory(),5,20,Style.LT);
g.drawString("Free memory:"+Runtime.getRuntime().freeMemory(),5,35,Style.LT);
}
flushGraphics();
isDrawing=false;
}
//System.out.println("enemy1.getLife()="+enemy1.getLife());
//System.out.println("battleMainRole.getLife()="+battleMainRole.getLife());
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
ThreadRunning=false;
}
private Timer ashesTimer;
private AshesTimerTask ashesTimerTask;
//显示死去的效果
private void showDieEffect(BattleSprite battleSprite)
{
ashesTimer = null;
ashesTimerTask = null;
ashesTimer = new Timer();
ashesTimerTask = new AshesTimerTask();
ashesTimerTask.setRoleLayer(roleLayer);
ashesTimerTask.setAshes(battleSprite);
ashesTimer.schedule(ashesTimerTask,0,60);
}
protected void keyPressed(int keyCode)
{
if(battleController!=null)battleController.keyPressed(keyCode);
}
protected void keyRepeated(int keyCode)
{
if(battleController!=null)battleController.keyRepeated(keyCode);
}
public void outBattle()
{
stop();
backLayer=null;
roleLayer=null;
battleMainRole=null;
System.gc();
//((Canvas1)last).outBattle();
GameMIDlet.midlet.outBattle();
}
//清除尸体的过程
class AshesTimerTask extends TimerTask{
private BattleSprite ashes;
private RoleLayer roleLayer;
private int step;
public BattleSprite getAshes() {
return ashes;
}
public void setAshes(BattleSprite ashes) {
this.ashes = ashes;
}
public RoleLayer getRoleLayer() {
return roleLayer;
}
public void setRoleLayer(RoleLayer roleLayer) {
this.roleLayer = roleLayer;
}
public void run() {
doClearAshes();
}
private void doClearAshes()
{
if(step==10)
{
roleLayer.remove(ashes);
}
else
if(step==11)
{
roleLayer.append(ashes);
}
else
if(step==12)
{
roleLayer.remove(ashes);
}
else
if(step==13)
{
roleLayer.append(ashes);
}
else
if(step==14)
{
roleLayer.remove(ashes);
}
else
if(step==15)
{
roleLayer.append(ashes);
}
else
if(step==16)
{
roleLayer.remove(ashes);
ashesTimer.cancel();
}
step++;
//System.out.println("step="+step);
}
}
/*
public void flushGraphics()
{
repaint();
serviceRepaints();
}
protected void paint(Graphics g)
{
g.drawImage(screenImg,0,0,Style.LT);
}
*/
/*
TimerTask timerTask2;
Timer timer2;
Box fadeInBox;
public void fadeIn()
{
fadeInBox=new Box();
fadeInBox.x=0;
fadeInBox.y=0;
fadeInBox.w=width;
fadeInBox.h=height;
timerTask2=new TimerTask()
{
public void run()
{
doFadeIn();
}
};
timer2=new Timer();
timer2.schedule(timerTask2,0,20);
}
private void doFadeIn()
{
fadeInBox.w=fadeInBox.w-width/10;
fadeInBox.h=fadeInBox.h-height/10;
fadeInBox.x=width/2-fadeInBox.w/2;
fadeInBox.y=height/2-fadeInBox.h/2;
if(fadeInBox.w<-width/10 && fadeInBox.h<-height/10)
{
timer2.cancel();
fadeInBox=null;
startAttack();
}
}
*/
class Loader extends Thread
{
public void run()
{
doLoadScene();
startGame();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -