⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mylayermanager.java

📁 J2ME的源码!我以前学习J2ME的源码哈!非常适合初学者
💻 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 + -