📄 mylayermanager.java
字号:
package layerManager;
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;
public class MyLayerManager extends GameCanvas implements Runnable {
private LayerManager layerManager;
private Sprite sprite;
private TiledLayer background;
private TiledLayer mountain;
private Graphics g;
private int spriteX, spriteY;
private int viewWindowX;
private int screenWidth;
private final static int BACKGROUND_COLUMN = 20;
private final static int BACKGROUND_ROW = 10;
private static final int SPRITE_WIDTH = 130;
private static final int SPRITE_HEIGHT = 203;
private static final int TILE_CELL_WIDTH = 24;
private static final int TILE_CELL_HEIGHT = 32;
private static final int MOUNTAIN_HEIGHT = 214;
private static final int MOUNTAIN_WIDTH = 433;
private int screenHeight;
protected MyLayerManager(boolean suppressKeyEvents) {
super(suppressKeyEvents);
init();
initBackground();
initMountain();
initSprite();
initLayerManager();
startThread();
}
private void init() {
g = getGraphics();
spriteY = getHeight() - SPRITE_HEIGHT - 10;
screenWidth = getWidth();
screenHeight = getHeight();
spriteX = screenWidth / 3;
viewWindowX = MOUNTAIN_WIDTH - screenWidth;
}
private void initLayerManager() {
layerManager = new LayerManager();
layerManager.append(sprite);
layerManager.append(mountain);
layerManager.append(background);
}
private void startThread() {
Thread thread = new Thread(this);
thread.start();
}
private void initSprite() {
Image image = null;
try {
image = Image.createImage("/sprite/kid.png");
} catch (IOException e) {
e.printStackTrace();
}
sprite = new Sprite(image, SPRITE_WIDTH, SPRITE_HEIGHT);
sprite.setPosition(spriteX + viewWindowX, spriteY);
}
private void initBackground() {
Image img = null;
try {
img = Image.createImage("/sprite/bg.png");
} catch (IOException e) {
e.printStackTrace();
}
background = new TiledLayer(BACKGROUND_COLUMN, BACKGROUND_ROW, img, TILE_CELL_WIDTH,
TILE_CELL_HEIGHT);
for (int i = 0; i < BACKGROUND_ROW; i++) {
for (int j = 0; j < BACKGROUND_COLUMN; j++) {
background.setCell(j, i, 1);
}
}
}
private void initMountain() {
Image img = null;
try {
img = Image.createImage("/sprite/mountain.png");
} catch (IOException e) {
e.printStackTrace();
}
mountain = new TiledLayer(1, 1, img, MOUNTAIN_WIDTH, MOUNTAIN_HEIGHT);
mountain.setCell(0, 0, 1);
mountain.move(0, getHeight() - MOUNTAIN_HEIGHT);
}
public void run() {
while (true) {
draw();
sleep();
move();
}
}
private void draw() {
layerManager.setViewWindow(viewWindowX, 0, screenWidth, screenHeight);
layerManager.paint(g, 0, 0);
flushGraphics();
}
private void move() {
if (viewWindowX > 0) {
viewWindowX--;
} else {
viewWindowX = MOUNTAIN_WIDTH - screenWidth;
}
sprite.nextFrame();
// 设置sprite图层在LayerManager坐标系中的位置
sprite.setPosition(spriteX + viewWindowX, spriteY);
}
private void sleep() {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -