ExampleGameSpriteMIDlet代码:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class ExampleGameSpriteMIDlet extends MIDlet implements CommandListener
{
private ExampleGameSprite gameCanvas; //声明游戏画布对象
private Command exitCmd=new Command("Exit",Command.SCREEN,1); //创建退出软键
public ExampleGameSpriteMIDlet()
{
gameCanvas=new ExampleGameSprite(); //创建游戏画布对象
gameCanvas.addCommand(exitCmd); //向游戏画布添加退出软键
gameCanvas.setCommandListener(this); //侦听软键事件
}
public void startApp()
{
gameCanvas.start(); //启动游戏线程
Display.getDisplay(this).setCurrent(gameCanvas); //在屏幕上显示游戏画布
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
}
public void commandAction(Command cmd,Displayable disp)
{
if(cmd==exitCmd) //如果用户按下退出软键,则推出程序
{
System.gc();
destroyApp(false);
notifyDestroyed();
}
}
}
class ExampleGameSprite代码:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class ExampleGameSprite extends GameCanvas implements Runnable
{
private boolean isPlay; //isPlay标志位决定游戏线程是否运行
private int Width,Height; //屏幕的宽度和高度
private final static int STEP=3; //人物移动幅度
private Sprite hero=null; //游戏精灵
private int frameWidth,frameHeight; //精灵的帧宽度和高度
private int lastState=-1; //游戏动作的前一状态,用来设置当前帧
public ExampleGameSprite()
{
super(true); //抑制游戏键盘
Width=getWidth(); //获取屏幕宽度
Height=getHeight(); //获取屏幕高度
try
{
Image img=Image.createImage("/sprite.png"); //加载图片资源,sprite.png大小是72(宽)X 128(高)
hero=new Sprite(img,24,32); //创建精灵
frameWidth=24; //帧宽度为24象素
frameHeight=32; //帧高度为32象素
}
catch(Exception e)
{
e.printStackTrace(); //捕捉异常
}
}
public void start()
{
isPlay=true;
Thread t=new Thread(this); //创建游戏线程
t.start(); //启动游戏线程
}
public void stop() {isPlay=false;} //停止游戏循环
public void run()
{ //游戏循环
Graphics g=getGraphics(); //获取Graphics对象
int timeStep=100; //设定游戏循环执行一次所耗费的时间
while(isPlay) //while(isPlay==true)