📄 player.java
字号:
package game;
import javax.microedition.lcdui.*;
import lib.*;
public class Player extends Sprite{
private Resource resource=Resource.getResource();
//企鹅所有的动作切片
private Rectangle[][] actorRect=new Rectangle[2][6];
//当前帧
private int currAnimIndex;
//企鹅在ACT_RUN状态下帧的变换速度
private Time runAnimTime=new Time(160);
//企鹅在ACT_RUN状态下帧的变换顺序
private int[] runAnimOrder={1,0,2,0};
private int runOrderIndex;
private void init(){
//面向左站立
actorRect[0][0]=new Rectangle(0,4,15,16);
//面向左走动作1
actorRect[0][1]=new Rectangle(16,3,15,17);
//面向左走动作2
actorRect[0][2]=new Rectangle(32,3,19,17);
//面向左起跳
actorRect[0][3]=new Rectangle(52,0,15,20);
//面向左下落
actorRect[0][4]=new Rectangle(68,2,18,18);
//面向左死
actorRect[0][5]=new Rectangle(87,9,23,11);
//面向右站立
actorRect[1][0]=new Rectangle(0,25,15,16);
//面向右走动作1
actorRect[1][1]=new Rectangle(16,24,15,17);
//面向右走动作2
actorRect[1][2]=new Rectangle(32,24,19,17);
//面向右起跳
actorRect[1][3]=new Rectangle(52,21,15,20);
//面向右下落
actorRect[1][4]=new Rectangle(68,23,18,18);
//面向右死
actorRect[1][5]=new Rectangle(87,30,23,11);
setWidth(15);
setHeight(16);
}
public Player(){
init();
}
public void paint(Graphics g,int offsetX,int offsetY){
int x=getX();
if(getFaceTo()==FACETO_LEFT)
x=getX()+(getWidth()-actorRect[FACETO_LEFT][currAnimIndex].width);
int y=getY()+(getHeight()-actorRect[getFaceTo()][currAnimIndex].height);
switch(getAct()){
case ACT_STAND:
Toolkit.drawRegion(g,resource.imgActor,actorRect[getFaceTo()][currAnimIndex],
x+offsetX,y+offsetY);
break;
case ACT_RUN:
Toolkit.drawRegion(g,resource.imgActor,actorRect[getFaceTo()][runAnimOrder[runOrderIndex]],
x+offsetX,y+offsetY);
break;
case ACT_JUMP:
Toolkit.drawRegion(g,resource.imgActor,actorRect[getFaceTo()][currAnimIndex],
x+offsetX,y+offsetY);
break;
case ACT_DEAD:
Toolkit.drawRegion(g,resource.imgActor,actorRect[getFaceTo()][currAnimIndex],
x+offsetX,y+offsetY);
break;
}
}
public void collideVertical(){
setVelocityX(0);
setVelocityY(0);
}
public void update(int elpasedTime){
switch(getAct()){
case ACT_STAND:
currAnimIndex=0;
break;
case ACT_RUN:
if(runAnimTime.update(elpasedTime)){
runOrderIndex=(runOrderIndex+1)%4;
currAnimIndex=runAnimOrder[runOrderIndex];
}
break;
case ACT_JUMP:
if(getVelocityY()<0)
currAnimIndex=3;
else
currAnimIndex=4;
break;
case ACT_DEAD:
currAnimIndex=5;
break;
}
}
public boolean isAlive(){
return getAct()!=ACT_DEAD;
}
public void setAct(int act){
super.setAct(act);
if(act==ACT_DEAD){
((Game)getTilesEngine()).setState(Game.STATE_LOSE);
setVelocityX(0);
setVelocityY(0);
if(resource.isMIPD2_0){
resource.backMedia.stop();
resource.loseMedia.play();
}
else{
if(resource.sound) resource.loseSound.play(1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -