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

📄 layertestmidlet.java

📁 简单介绍了一些图层和图层管理器的用法
💻 JAVA
字号:

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.game.*;

public class LayerTestMIDlet extends MIDlet implements CommandListener {
	private Command exit;

	private MyCanvas canvas;

	public LayerTestMIDlet() {//创建命令,画布
		exit = new Command("Exit", Command.EXIT, 1);
		canvas = new MyCanvas();
		canvas.addCommand(exit);
		canvas.setCommandListener(this);
	}

	protected void startApp() {//显示画布并开始游戏执行
		new Thread(canvas).start();
		Display.getDisplay(this).setCurrent(canvas);
	}

	protected void pauseApp() {
	}

	protected void destroyApp(boolean p1) {
	}

	public void commandAction(Command c, Displayable d) {
		if (c == exit) {
			destroyApp(false);
			notifyDestroyed();
		} 
	}
}
	 class MyCanvas extends GameCanvas implements Runnable{
		private Graphics g;

		private TiledLayer backLayer;//图层

		private Image backImage;

		private int counter = 0;//计数器

		private int index = 0;//保存动画分块的序号

		//记录图层backLayer的每个单元对应的图像块序号
		private byte[][] backMap = {
                { 1, -1, -1, -1, -1 },//序号-1为动态分块
				{ 1, 1, 1, 1, 1 },
                { 4, 4, 1, 1, 1},
                { 4, 4, 4, 2, 1},
				{ 4, 4, 4, 4, 4 }
        };

		public MyCanvas() {
			super(true);
			g = getGraphics();//得到作图对象
			try {//装入图像
				backImage = Image.createImage("/layer.png");
			} catch (Exception e) {
			}
			//创建图层,分块大小为:35×35,单元格数量为:5×5
			backLayer = new TiledLayer(5, 5, backImage, 35, 35);
			//创建动画分块,index 应该返回 -1
			index = backLayer.createAnimatedTile(6);
			for (int y = 0; y < 5; y++) {//逐个设置每个单元格的图像,标记为0的单元格表示不处理
				for (int x = 0; x < 5; x++)
					backLayer.setCell(x, y, backMap[y][x]);
			}
		}

		public void squareMove() {//直接修改单元格内的图像
			backLayer.setCell(3, 3, counter % 2 + 2);
		}

		public void cloudMove() {//修改动态分块中的图像来达到动画效果
			if (counter % 2 == 0)
				backLayer.setAnimatedTile(index, 5);
			else
				backLayer.setAnimatedTile(index, 6);
		}
		
		public void run(){//不断地做动画效果
		   while(true){
		      move();
		      try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		   }	
		}

		//执行游戏功能
		public void move() {
			counter++;//增加计数器
			cloudMove();//显示云彩的动画效果
			squareMove();//显示方块的动画效果
			//将图层绘制的脱机屏幕上
			backLayer.paint(g);
			//刷新屏幕
			flushGraphics();
		}
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -