⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chicksprite.java

📁 J2ME手机游戏50例
💻 JAVA
字号:
package demo;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;

public class ChickSprite extends Sprite{
	//定义一组状表示小鸡状态的数值
	public static final int CHICK_STAND 	= 0;		//原地站立	
	public static final int CHICK_LEFT 	= 1;		//向左跑
	public static final int CHICK_RIGHT 	= 2;		//向右跑
	public static final int CHICK_DOWN 	= 3;		//被砸倒
	public static final int CHICK_STATE_NUM 	= 4;	//状态总数
	private int m_nState = CHICK_STAND;  		
	public int m_nTime	= 15;					//砸倒后,倒地停留时间	
	public ChickSprite( Image image, int frameWidth, int frameHeight){
		super(image, frameWidth, frameHeight);		
		defineReferencePixel(frameWidth / 2, frameHeight / 2);		
	}
	//获取当前状态
	public int getState(){	
		return m_nState;
	}
	//设置当前状态,参数state是新状态值
	public void setState( int state ){
		if( m_nState < 0 || m_nState >= CHICK_STATE_NUM )
			return;
		m_nState = state;
		if( m_nState == CHICK_DOWN )
			m_nTime = 15;				//设置倒地时间
	}
	//处理按键的输入
	//参数keyStates为当前的按键状态,scrWidth与scrHeight分别是屏幕的宽与高
	public void Input( int keyStates, int scrWidth, int scrHeight ){
		if( m_nState == CHICK_DOWN )					//小鸡被砸倒
			return;
		int x = getRefPixelX();
		if( ( keyStates & GameCanvas.LEFT_PRESSED ) != 0 ){
			setState( CHICK_LEFT );						//小鸡向左跑
			x = x - 4;
		}
		else if( ( keyStates & GameCanvas.RIGHT_PRESSED ) != 0 ){
			setState( CHICK_RIGHT );					//小鸡向右跑
			x = x + 4;
		}
		else
			setState( CHICK_STAND );					//小鸡原地站立
		
		if( x >= this.getWidth() / 2  &&  x <= scrWidth - this.getWidth() / 2 )
			setRefPixelPosition( x, getRefPixelY() );
		
	}
	//逻辑操作,产生并控制各种状态下的小鸡动画
	public void Logic(){
		switch( m_nState ){
		case CHICK_STAND:								//小鸡原地站立
			setTransform( Sprite.TRANS_NONE );
			setFrame(0);
			break;
		case CHICK_LEFT:								//小鸡向左跑
			setTransform( Sprite.TRANS_NONE );
			if( getFrame() == 0 )
				setFrame(1);
			else
				setFrame(0);
			break;
		case CHICK_RIGHT:								//小鸡向右跑
			setTransform( Sprite.TRANS_MIRROR );
			if( getFrame() == 0 )
				setFrame(1);
			else
				setFrame(0);
			break;
		case CHICK_DOWN:								//小鸡被砸倒
			setTransform( Sprite.TRANS_NONE );
			setFrame(2);
			m_nTime --;
			if( m_nTime < 0 ){
				setState( CHICK_STAND );
			}
			break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -