主程序:
/*
* GameMIDlet.java
*
* Created on 2006年4月28日, 下午9:31
*/
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDletStateChangeException;
/**
*
* @author hero
* @version
*/
public class GameMIDlet extends MIDlet
{
static GameMIDlet instance;
static Display display;
private GameScreen gameScreen;
public GameMIDlet()
{
instance = this;
gameScreen = new GameScreen(false); //产生实例
display = Display.getDisplay(this);
}
protected void startApp() throws MIDletStateChangeException
{
gameScreen.start();// 启动线程,不知道什么原因,在这一句出现stop的现象,有可能是自己用F5时,设置了断点
display.setCurrent(gameScreen);
}
protected void pauseApp()
{
gameScreen.stop();
}
public void destroyApp(boolean flag) throws MIDletStateChangeException
{
gameScreen.stop();
}
}
* GameMIDlet.java
*
* Created on 2006年4月28日, 下午9:31
*/
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDletStateChangeException;
/**
*
* @author hero
* @version
*/
public class GameMIDlet extends MIDlet
{
static GameMIDlet instance;
static Display display;
private GameScreen gameScreen;
public GameMIDlet()
{
instance = this;
gameScreen = new GameScreen(false); //产生实例
display = Display.getDisplay(this);
}
protected void startApp() throws MIDletStateChangeException
{
gameScreen.start();// 启动线程,不知道什么原因,在这一句出现stop的现象,有可能是自己用F5时,设置了断点
display.setCurrent(gameScreen);
}
protected void pauseApp()
{
gameScreen.stop();
}
public void destroyApp(boolean flag) throws MIDletStateChangeException
{
gameScreen.stop();
}
}
次程序:
/*
* GameScreen.java
*
* Created on 2006年4月28日, 下午10:22
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.Random;
/**
*
* @author hero
*/
final class GameScreen extends GameCanvas implements Runnable
{
/** Creates a new instance of GameScreen */
private Graphics graphics; //保存图形环境实例
private boolean runningFlag = false; //线程运行标志
private static final long TIME_PER_FRAME = 100;// 每一帧的周期
private int width;//屏幕宽度
private int height;//屏幕高度
private Random random = new Random(); //设置一个随机数;
public static final int BLUE = 0x000000ff;
private int x,y,vx,vy;
String str="J2ME游戏世界";
public GameScreen(boolean flag)
{
super(flag);
graphics = getGraphics();//取得图形环境实例
width = getWidth();
height = getHeight();
init();
}
void init()
{
x=width/2;
y=height/2;
vx=random.nextInt(2)+1;//nextInt(int i)定义在cldc 1.1中
vy=random.nextInt(2)+1;
}
private void input()
{
}
private void logic()
{
x+=vx;
y+=vy;
Font font=graphics.getFont();
if(x<=0||x+font.stringWidth(str)>=width){
vx=-vx;
}
if(y<=0||y+20>=height){
vy=-vy;
}
}
private void render(Graphics g)
{
g.setColor(BLUE);
g.fillRect(0, 0, width, height);
g.setColor(0x00ffffff);
g.drawString(str,x,y,Graphics.LEFT|Graphics.TOP);
}
public synchronized void start()
{
if (!runningFlag) {
runningFlag = true;
Thread th = new Thread(this);//启动线程
th.start();
}
}
public synchronized void stop()
{
runningFlag=false;
}
public void run()
{
while(runningFlag)
{
long startTime=System.currentTimeMillis();
input();
logic();
render(graphics);
flushGraphics();
long elapsedTime = System.currentTimeMillis() - startTime;
if(elapsedTime < TIME_PER_FRAME)
{
try
{
Thread.sleep(TIME_PER_FRAME-elapsedTime);
}
catch(InterruptedException ex)
{
}
}
}
}
}
* GameScreen.java
*
* Created on 2006年4月28日, 下午10:22
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.Random;
/**
*
* @author hero
*/
final class GameScreen extends GameCanvas implements Runnable
{
/** Creates a new instance of GameScreen */
private Graphics graphics; //保存图形环境实例
private boolean runningFlag = false; //线程运行标志
private static final long TIME_PER_FRAME = 100;// 每一帧的周期
private int width;//屏幕宽度
private int height;//屏幕高度
private Random random = new Random(); //设置一个随机数;
public static final int BLUE = 0x000000ff;
private int x,y,vx,vy;
String str="J2ME游戏世界";
public GameScreen(boolean flag)
{
super(flag);
graphics = getGraphics();//取得图形环境实例
width = getWidth();
height = getHeight();
init();
}
void init()
{
x=width/2;
y=height/2;
vx=random.nextInt(2)+1;//nextInt(int i)定义在cldc 1.1中
vy=random.nextInt(2)+1;
}
private void input()
{
}
private void logic()
{
x+=vx;
y+=vy;
Font font=graphics.getFont();
if(x<=0||x+font.stringWidth(str)>=width){
vx=-vx;
}
if(y<=0||y+20>=height){
vy=-vy;
}
}
private void render(Graphics g)
{
g.setColor(BLUE);
g.fillRect(0, 0, width, height);
g.setColor(0x00ffffff);
g.drawString(str,x,y,Graphics.LEFT|Graphics.TOP);
}
public synchronized void start()
{
if (!runningFlag) {
runningFlag = true;
Thread th = new Thread(this);//启动线程
th.start();
}
}
public synchronized void stop()
{
runningFlag=false;
}
public void run()
{
while(runningFlag)
{
long startTime=System.currentTimeMillis();
input();
logic();
render(graphics);
flushGraphics();
long elapsedTime = System.currentTimeMillis() - startTime;
if(elapsedTime < TIME_PER_FRAME)
{
try
{
Thread.sleep(TIME_PER_FRAME-elapsedTime);
}
catch(InterruptedException ex)
{
}
}
}
}
}