www.pudn.com > MoveCanvas.rar > Sprite4_MoveSpriteCanvas.java


import java.io.IOException; 
 
import javax.microedition.lcdui.game.*; 
import javax.microedition.lcdui.*; 
 
public class Sprite4_MoveSpriteCanvas extends GameCanvas implements Runnable{ 
	private int drawX, drawY; 
	private Sprite spr, spl, spu, spd; 
	private Image pic; 
	private int[] right = {9, 10, 11};//向右走的图片数组 
	private int[] left = {3, 4, 5};//向左走的图片数组 
	private int[] up = {6, 7, 8};//向上走的图片数组 
	private int[] down = {0, 1, 2};//向下走的图片数组 
	private Graphics g; 
	private int act = 3;//判断行动方向 
 
	public Sprite4_MoveSpriteCanvas() { 
		super(true); 
//		X,Y初值 
		drawX = this.getWidth()/2 - 32; 
		drawY = this.getHeight()/2; 
		try { 
			pic = Image.createImage("/man.png"); 
		} catch (IOException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 
//		分配精灵图片 
		spr = new Sprite(pic, 32, 48); 
		spr.setFrameSequence(right); 
		spl = new Sprite(pic, 32, 48); 
		spl.setFrameSequence(left); 
		spu = new Sprite(pic, 32, 48); 
		spu.setFrameSequence(up); 
		spd = new Sprite(pic, 32, 48); 
		spd.setFrameSequence(down); 
		g = this.getGraphics(); 
		Thread t = new Thread(this); 
		t.start(); 
		 
		// TODO Auto-generated constructor stub 
	} 
 
	public void run() { 
		while(true) 
		{ 
			try { 
				Thread.sleep(200); 
			} catch (InterruptedException e) { 
				// TODO Auto-generated catch block 
				e.printStackTrace(); 
			} 
			move();//行动判定方法 
			draw(g);//图象判定方法 
			 
		} 
		// TODO Auto-generated method stub 
		 
	} 
	 
 
	private void draw(Graphics g2) { 
//		清屏 
		g.setColor(255, 255, 255); 
		g.fillRect(0, 0, this.getWidth(), this.getHeight()); 
//		向上走 
		if(act == 0) 
		{ 
			spd.setFrame(0); 
			spd.setPosition(drawX, drawY); 
			spd.paint(g); 
			flushGraphics(); 
		} 
		if(act == 1) 
		{ 
			spu.nextFrame(); 
			spu.setPosition(drawX, drawY); 
			spu.paint(g); 
			flushGraphics(); 
		} 
//		向下走 
		if(act == 2) 
		{ 
			spd.nextFrame(); 
			spd.setPosition(drawX, drawY); 
			spd.paint(g); 
			flushGraphics(); 
		} 
//		向右走 
		if(act == 3) 
		{ 
			spr.nextFrame(); 
			spr.setPosition(drawX, drawY); 
			spr.paint(g); 
			flushGraphics(); 
		} 
//		向左走 
		if(act == 4) 
		{ 
			spl.nextFrame(); 
			spl.setPosition(drawX, drawY); 
			spl.paint(g); 
			flushGraphics(); 
		} 
		// TODO Auto-generated method stub 
		 
	} 
 
	private void move() { 
		int code = this.getKeyStates(); 
		if((code & UP_PRESSED) != 0) 
		{ 
			act = 1; 
			if(drawY <= 0) 
			{ 
				drawY = 0; 
			} 
			else 
			{ 
				drawY = drawY - 5; 
			} 
			 
		} 
		else if((code & DOWN_PRESSED) != 0) 
		{ 
			act = 2; 
			if(drawY + 48 >= this.getHeight()) 
			{ 
				drawY = this.getHeight() - 48; 
			} 
			else 
			{ 
				drawY = drawY + 5; 
			} 
		} 
		else if((code & RIGHT_PRESSED) != 0) 
		{ 
			act = 3; 
			if(drawX + 32 >= this.getWidth()) 
			{ 
				drawX = this.getWidth() - 32; 
			} 
			else 
			{ 
				drawX = drawX + 5; 
			} 
		} 
		else if((code & LEFT_PRESSED) != 0) 
		{ 
			act = 4; 
			if(drawX <= 0) 
			{ 
				drawX = 0; 
			} 
			else 
			{ 
				drawX = drawX - 5; 
			} 
		}else{ 
			act=0; 
		} 
		 
		// TODO Auto-generated method stub 
		 
	} 
 
}