actor.java

来自「J2ME编程的50个例子,适合掌上系统的编程」· Java 代码 · 共 65 行

JAVA
65
字号
package demo;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;

public class Actor extends Sprite{
	private int m_nLastMoveX;						//上次移动的X距离
	private int m_nLastMoveY;						//上次移动的Y距离
	Actor(Image image, int frameWidth, int frameHeight){
		super(image, frameWidth, frameHeight);		
	}
	//处理按键输入
	public void Input( int keyStates ){
		int nFrame = getFrame();
		if( ( keyStates & GameCanvas.UP_PRESSED ) != 0 )
		{//向上运动
        	Move( 0, -1 );
			nFrame ++;
			if( nFrame > 1 || nFrame < 0 )
				nFrame = 0;
			setFrame( nFrame );
			setTransform( TRANS_NONE );
		}   	
		else if( ( keyStates & GameCanvas.RIGHT_PRESSED ) != 0 )
		{//向右运动
        	Move( 1, 0 );
			nFrame ++;
			if( nFrame > 3 || nFrame < 2 )
				nFrame = 2;
			setFrame( nFrame );
			setTransform( TRANS_NONE );
		}
		else if( ( keyStates & GameCanvas.DOWN_PRESSED ) != 0 )
		{//向下运动
        	Move( 0, 1 );
			nFrame ++;
			if( nFrame > 5 || nFrame < 4 )
				nFrame = 4;
			setFrame( nFrame );
			setTransform( TRANS_NONE );
		}
		else if( ( keyStates & GameCanvas.LEFT_PRESSED ) != 0 )
		{//向左运动
        	Move( -1, 0 );
			nFrame ++;
			if( nFrame > 3 || nFrame < 2 )
				nFrame = 2;
			setFrame( nFrame );
			setTransform( TRANS_MIRROR );      		
		}
	}
	//移动MM,参数nX、nY分别是移动的X、Y距离
	private void Move( int nX, int nY ){
		m_nLastMoveX = nX;
		m_nLastMoveY = nY;
		setRefPixelPosition( getRefPixelX() + nX, getRefPixelY() + nY );
	}
	//使MM向后退
	public void MoveBack(){
		Move( -m_nLastMoveX, -m_nLastMoveY );
		m_nLastMoveX = 0;
		m_nLastMoveY = 0;
	}
}

⌨️ 快捷键说明

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