📄 fixedmonkey.java
字号:
package game;
import lib.*;
import javax.microedition.lcdui.*;
//不动的猴子
public class FixedMonkey extends Sprite{
//扔香蕉皮
public static final int ACT_CHUCK=ACT_USER;
private Resource resource=Resource.getResource();
//猴子所有的动作切片
private static Rectangle[][] monkeyRect=new Rectangle[2][8];
static{
//面向左站立1
monkeyRect[0][0]=new Rectangle(0,0,25,21);
//面向左站立2
monkeyRect[0][1]=new Rectangle(26,1,24,20);
//面向左起跳
monkeyRect[0][2]=new Rectangle(51,5,30,16);
//面向左下落
monkeyRect[0][3]=new Rectangle(82,0,28,21);
//面向左扔香蕉皮1
monkeyRect[0][4]=new Rectangle(111,1,25,20);
//面向左扔香蕉皮2
monkeyRect[0][5]=new Rectangle(137,1,23,20);
//面向左被击中1
monkeyRect[0][6]=new Rectangle(161,0,24,21);
//面向左被击中2
monkeyRect[0][7]=new Rectangle(186,1,23,20);
//面向右站立1
monkeyRect[1][0]=new Rectangle(0,22,25,21);
//面向右站立2
monkeyRect[1][1]=new Rectangle(26,23,24,20);
//面向右起跳
monkeyRect[1][2]=new Rectangle(51,27,30,16);
//面向右下落
monkeyRect[1][3]=new Rectangle(82,22,28,21);
//面向右扔香蕉皮1
monkeyRect[1][4]=new Rectangle(111,23,25,20);
//面向右扔香蕉皮2
monkeyRect[1][5]=new Rectangle(137,23,23,20);
//面向右被击中1
monkeyRect[1][6]=new Rectangle(161,22,24,21);
//面向右被击中2
monkeyRect[1][7]=new Rectangle(186,23,23,20);
}
//当前帧
private int currAnimIndex;
//猴子在各种动画下帧的变换速度
private Time animTime=new Time(240);
//猴子从ACT_STAND状态到ACT_CHUCK状态经过的时间
private Time standToChuckTime=new Time(3000);
private boolean needRemove;
public FixedMonkey(int x,int y,int faceTo){
this.x=x;
this.y=y;
this.faceTo=faceTo;
this.width=24;
this.height=20;
}
public void paint(Graphics g,int offsetX,int offsetY){
int ox=x;
if(faceTo==FACETO_RIGHT)
ox=x+(width-monkeyRect[FACETO_RIGHT][currAnimIndex].width);
int oy=y+(height-monkeyRect[faceTo][currAnimIndex].height);
Toolkit.drawRegion(g,resource.imgMonkey,monkeyRect[faceTo][currAnimIndex],ox+offsetX,oy+offsetY);
}
public void update(int elapsedTime){
switch(act){
case ACT_STAND:
if(animTime.update(elapsedTime)){
currAnimIndex=currAnimIndex==0?1:0;
}
if(standToChuckTime.update(elapsedTime)){
setAct(ACT_CHUCK);
currAnimIndex=4;
}
break;
case ACT_CHUCK:
if(animTime.update(elapsedTime)){
if(currAnimIndex==4){
currAnimIndex=5;
Sprite sprite=new Banana(getFaceTo()==0?getX():getX()+getWidth(),getY());
sprite.setVelocityX(getFaceTo()==0?-3:3);
sprite.setVelocityY(-8);
sprite.setTilesEngine(getTilesEngine());
getTilesEngine().addSprites(sprite);
}
else{
setAct(ACT_STAND);
currAnimIndex=0;
}
}
break;
case ACT_DEAD:
if(animTime.update(elapsedTime)){
if(currAnimIndex==6){
currAnimIndex=7;
}
else{
needRemove=true;
}
}
break;
}
}
public void collideVertical(){
vx=0;
vy=0;
}
public boolean isFixed(){
return true;
}
public boolean isAlive(){
return getAct()!=ACT_DEAD;
}
public void setAct(int act){
super.setAct(act);
if(act==ACT_DEAD){
currAnimIndex=6;
}
}
public boolean isNeedRemove(){
return needRemove;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -