📄 gamescreenhold.java
字号:
package com.j2medev.chapter5.example;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.*;
import com.j2medev.chapter5.utility.Clock;
import com.j2medev.chapter5.example.hold.GameWorld;
import java.util.Random;
final public class GameScreenHold extends GameCanvas implements Runnable {
public static Graphics graphics; //保存图形环境实例
private boolean runningFlag = false; //线程运行标志
private static final long TIME_PER_FRAME = 80;// 每一帧的周期
private int width;//屏幕宽度
private int height;//屏幕高度
static public InputManager inputManager = new InputManager();
///////////////////////自定义部分开始/////////////////////////////////
static public GameWorld world;
int bkUpdateTick=0;
///////////////////////自定义部分结束/////////////////////////////////
GameScreenHold(boolean flag) { //构造方法;
super(flag);
graphics = getGraphics();//取得图形环境实例
width = getWidth();
height = getHeight();
init();
}
void init() { //初始化游戏数据;
///////////////////////自定义部分开始/////////////////////////////////
world=new GameWorld(getWidth(),getHeight());
///////////////////////自定义部分结束/////////////////////////////////
}
private void input() { //处理输入
///////////////////////自定义部分开始/////////////////////////////////
///////////////////////自定义部分结束/////////////////////////////////
}
private void logic() { //更新逻辑
///////////////////////自定义部分开始/////////////////////////////////
world.update();
///////////////////////自定义部分结束/////////////////////////////////
}
private void render(Graphics g) { //渲染画面
///////////////////////自定义部分开始/////////////////////////////////
world.paint(g);
///////////////////////自定义部分结束/////////////////////////////////
}
synchronized public void start() {
if (!runningFlag) {
runningFlag = true;
Thread th = new Thread(this);//启动线程
th.start();
}
}
synchronized public void stop() {
runningFlag = false;
}
public void run() {
System.out.println("Game main loop start");
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) {
}
}
}
System.out.println("Game main loop stop");
}
protected void keyPressed(int keyCode) {
inputManager.keyPressed(keyCode);
}
protected void keyReleased(int keyCode) {
inputManager.keyReleased(keyCode);
}
protected void keyRepeated(int keyCode) {
inputManager.keyRepeated(keyCode);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -