📄 mygamecanvas.java
字号:
package untitled4;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
public class MyGameCanvas extends GameCanvas implements Runnable {
private Image backgd , house ;
private LayerManager layers;
private TiledLayer tiles;
private Sprite sprite;
private int xd,yd;
private Thread thread;
public MyGameCanvas() {
super(true);
layers = new LayerManager();
setupTheme();
xd = getWidth()/2;
yd = getHeight();
}
private void setupTheme() {
try {
backgd = Image.createImage("/untitled4/desert_02.png");
house = Image.createImage("/untitled4/Animal59.png");
sprite = new Sprite(house,24,32);
sprite.setFrame(1); //显示第二针
layers.append(sprite);
sprite.move(getWidth()/2,getHeight()-32); //把sprite放置到屏幕的最底层的中央
tiles = new TiledLayer(50, 10, backgd, 80, 80);
//填充一些背景图
tiles.fillCells(0,0,9,7,3);
//随机设置场景
tiles.setCell(0,0,5);
layers.append(tiles);
}
catch(Exception e) {
e.printStackTrace();
}
}
public void run() {
Graphics g = getGraphics();
while (true) {
int keyState = getKeyStates();
updateSprite(keyState);
layers.paint(g,0,0); //从坐标(0,0)开始显示各个图层
flushGraphics();
try {
thread.sleep(20);
}
catch(Exception e) { e.printStackTrace(); }
}
}
protected void showNotify() {
thread = new Thread(this); //创建指向自己的线程,常常建立一个单独的线层用于游戏过程的循环(马儿不断的跑)
thread.start(); //启动线程
}
private void updateSprite(int keyState) {
if ((keyState & UP_PRESSED) != 0) {
sprite.setFrame(1);
sprite.move(0,-5);
yd-=5;
}
if ((keyState & DOWN_PRESSED) != 0) {
sprite.setFrame(1);
sprite.move(0,5);
yd+=5;
}
if ((keyState & LEFT_PRESSED) != 0) {
sprite.setFrame(10);
sprite.move(-5,0);
xd-=5;
}
if ((keyState & RIGHT_PRESSED) != 0) {
sprite.setFrame(4);
sprite.move(5,0);
xd+=5;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -