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

📄 mansprite.java

📁 自己做的HunDouLuo j2me游戏
💻 JAVA
字号:

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;

public class ManSprite extends Sprite {
	public static final int MAN_RIGHT		= 0;	//向右跑
	public static final int MAN_LEFT		= 1;	//向左跑
	public static final int MAN_STOP_R	= 2;	//停下向右
	public static final int MAN_STOP_L	= 3;	//停下向左
	public static final int MAN_STATE_NUM	= 4;	//状态总数
	private int m_nState = MAN_STOP_R;
	protected int m_nSpeed		= 1;			//英雄的移动速率(注意不是速度)
	public BulletSprite m_Bullet;  				//英雄携带的炮弹
	public ManSprite(Image image, int frameWidth, int frameHeight) {
		super(image, frameWidth, frameHeight);
		defineReferencePixel(frameWidth / 2, frameHeight / 2);
		try{
			Image img = Image.createImage("/demo/bullet.png");
			m_Bullet = new BulletSprite(img,3,3);
		}
		catch(Exception e){}
	}
	//设置状态
	public void setState(int state){
		if( state < 0 || state >= MAN_STATE_NUM )
			return;
		m_nState = state;
	}
	//获取状态
	public int getState(){
		return m_nState;
	}
	//处理按键的操作,参数keyStates为按键状态
	public void Input( int keyStates )
	{
		int x = getRefPixelX();
		int y = getRefPixelY();
		if ((keyStates & GameCanvas.LEFT_PRESSED) != 0)
		{//向左跑
			setState(MAN_LEFT);
			x -= m_nSpeed;
		}
		else if ((keyStates & GameCanvas.RIGHT_PRESSED) != 0)
		{//向右跑
			setState(MAN_RIGHT);
			x += m_nSpeed;
	    }
		else{
			switch( m_nState ){
			case MAN_RIGHT:
				setState(MAN_STOP_R);
				break;
			case MAN_LEFT:
				setState(MAN_STOP_L);
				break;
			}
		}
		setRefPixelPosition(x, y);
		if ((keyStates & GameCanvas.FIRE_PRESSED) != 0)
		{//发射炮弹	 
			CreateBullet();
		}
	}
	//逻辑操作
	public void Logic(int scrWidth, int scrHeight){
		//控制炮弹
		m_Bullet.Logic(scrWidth, scrHeight);
		int n = getFrame();
		//根据状态设置各种动画
		switch( m_nState ){
		case MAN_RIGHT:
			if( n == 1 )
				setFrame(2);
			else
				setFrame(1);
			setTransform(Sprite.TRANS_NONE);			
			break;
		case MAN_LEFT:
			if( n == 1 )
				setFrame(2);
			else
				setFrame(1);
			setTransform(Sprite.TRANS_MIRROR);	
			break;
		case MAN_STOP_R:
			setFrame(0);
			setTransform(Sprite.TRANS_NONE);
			break;
		case MAN_STOP_L:
			setFrame(0);
			setTransform(Sprite.TRANS_MIRROR);
			break;
		}
	}
	//发射炮弹
	public void CreateBullet(){
	    if( m_Bullet.isVisible() )
	    	return;
	    m_Bullet.setVisible(true);
	    int nX = getX();
	    int nY = getY() + getHeight() / 2 - 5;
	    boolean bRight = false;
	    switch( m_nState ){
	    case MAN_RIGHT:
	    case MAN_STOP_R:
	    	bRight = true;
	    	nX = nX + getWidth();
	    	break;
	    }
		
	    m_Bullet.Start( nX, nY, bRight, 5 );
	}
}

⌨️ 快捷键说明

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