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

📄 basecanvas.java

📁 Java手机游戏源代码(企业公司源代码)供初学者参考。
💻 JAVA
字号:
package com.gt.mobile;

import java.util.Vector;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class BaseCanvas extends Canvas {

	private boolean mapActionToNumber = true;

	private boolean canRepaint = true;

	public static final int ZERO = 0;

	public static final int ONE = 1;

	private int canvasWidth, canvasHeight;

	private int drawX, drawY, drawWidth, drawHeight;

	private int drawCenterX, drawCenterY;

	// private int repaintX,repaintY,repaintWidth,repaintHeight;
	public static final int COLOR_BLACK = 0x000000;

	public static final int COLOR_WHITE = 0xffffff;

	public static final int COLOR_GREEN = 0x00ff00;
	
	public static final int COLOR_GRAY=0xf2f2f2;
	
	public static final int COLOR_ML2=0x953735;
	
	public static final int COLOR_CMPINK=0xf2dcdb;
	
	public static final int COLOR_CMGRAYVIEW=0x6c6c6c;

	private int g_bgColor = COLOR_WHITE;

	private Image g_bgImage = null;

	private boolean borderVisible = true;

	public static final Font FONT_DEFAULT = Font.getDefaultFont();

	// private boolean bgImageVisible=false;
	// private Image bgImage=null;
	// private int bgImageX,bgImageY;

	// shake
	private int shakeRange;

	private int shakeTime;

	// private int shakeTimeCount;
	private boolean shakeSign;

//	private static int leftSoftKey = -6;
//
//	private static int rightSoftKey = -7;

	// private int testCount=0;

	private CanvasListener g_canvasListener;
	//
	private Vector g_topItems=null;

	public BaseCanvas() {
		this(-1, -1);
	}

	public BaseCanvas(int drawWidth, int drawHeight) {
		setFullScreenMode(true);
		canvasWidth = getWidth();
		canvasHeight = getHeight();
		setDrawSize(drawWidth, drawHeight);
		// this.drawWidth=drawWidth;
		// this.drawHeight=drawHeight;

		// setFullScreenMode(true);
	}

	protected void sizeChanged(int width, int height) {
		canvasWidth = width;
		canvasHeight = height;
		// System.out.println("sizeChanged:"+height);
		setDrawSize(drawWidth, drawHeight);
	}
	
	public void beforeEnter(){
		
	}

	public void afterEnter(){
		
	}
	
	public void beforeHide(){
		
	}
	
	public void afterHide(){
		
	}
	
	protected final void doUpdate() {
		updating();
	}

	protected void updating() {

	}

	protected final void doRepaint() {
		if (canRepaint) {
			// repaint(repaintX,repaintY,repaintWidth,repaintHeight);
			repaint(drawX, drawY, drawWidth, drawHeight);
			// repaint();
			// repaint(0,getCanvasHeight()-FONT_DEFAULT.getHeight(),getCanvasWidth(),FONT_DEFAULT.getHeight());
			// repaint(0,0,getCanvasWidth(),FONT_DEFAULT.getHeight());
			serviceRepaints();
		}
	}

	protected final void paint(Graphics g) {
		if (shakeTime >= 0) {
			if (shakeRange > 0) {
				if (drawX != drawCenterX) {
					drawX = drawCenterX;
				} else {
					if (shakeSign) {
						drawX -= shakeRange;
						shakeSign = false;
					} else {
						drawX += shakeRange;
						shakeSign = true;
					}
				}
			} else {
				if (drawY != drawCenterY) {
					drawY = drawCenterY;
				} else {
					if (shakeSign) {
						drawY -= shakeRange;
						shakeSign = false;
					} else {
						drawY += shakeRange;
						shakeSign = true;
					}
				}
			}
			if (--shakeTime < 0) {
				centerDrawArea();
			}
		}

		// g.setClip(0,getCanvasHeight()-FONT_DEFAULT.getHeight(),getCanvasWidth(),FONT_DEFAULT.getHeight());

		g.setColor(g_bgColor);
		g.fillRect(ZERO, ZERO, canvasWidth, canvasHeight);
		if (borderVisible) {
			g.setColor(COLOR_GREEN);
			g.drawRect(drawX - ONE, drawY - ONE, drawWidth + ONE, drawHeight
					+ ONE);
		}
		if (g_bgImage != null) {
			g.drawImage(g_bgImage,
					(getCanvasWidth() - g_bgImage.getWidth()) / 2,
					(getCanvasHeight() - g_bgImage.getHeight()) / 2, ZERO);
		}

		// test
		// g.setColor(COLOR_WHITE);
		// g.fillRect(drawX, drawY, drawWidth, drawHeight);
		// g.drawString(""+(testCount++), 0, 0, 0);

		g.setClip(0, 0, getCanvasWidth(),getCanvasHeight());
		draw(g);
		// draw(g,drawX,drawY,drawWidth,drawHeight);
	}

	protected void draw(Graphics g) {

	}

	public void setCanRepaint(boolean canRepaint) {
		this.canRepaint = canRepaint;
	}

	public boolean canRepaint() {
		return canRepaint;
	}

	public void setDrawSize(int drawWidth, int drawHeight) {
		this.drawWidth = drawWidth < 0 ? canvasWidth : drawWidth;
		this.drawHeight = drawHeight < 0 ? canvasHeight : drawHeight;
		this.drawCenterX = (canvasWidth - this.drawWidth) / 2;
		this.drawCenterY = (canvasHeight - this.drawHeight) / 2;
		centerDrawArea();
	}

	private void centerDrawArea() {
		this.drawX = (canvasWidth - drawWidth) / 2;
		this.drawY = (canvasHeight - drawHeight) / 2;
		// System.out.println("centerDrawArea>>>"+drawX+":"+drawY+"
		// "+drawWidth+":"+drawHeight);
	}

	public int getDrawX() {
		return drawX;
	}

	public int getDrawY() {
		return drawY;
	}

	public int getDrawWidth() {
		return drawWidth;
	}

	public int getDrawHeight() {
		return drawHeight;
	}

	public boolean isBorderVisible() {
		return this.borderVisible;
	}

	public void setBorderVisible(boolean borderVisible) {
		this.borderVisible = borderVisible;
	}

	public int getCanvasWidth() {
		return canvasWidth;
	}

	public int getCanvasHeight() {
		return canvasHeight;
	}

	public void setBackgroundColor(int bgColor) {
		g_bgColor = bgColor;
	}

	public int getBackgroundColor() {
		return g_bgColor;
	}

	public void setBackgroundImage(Image bgImage) {
		g_bgImage = bgImage;
	}

	public Image getBackgroundImage() {
		return g_bgImage;
	}

	// movement 大于0时,水平振动;小于0时,垂直振动.
	public void shakeCanvas(int shakeRange, int shakeTime) {
		this.shakeRange = shakeRange;
		this.shakeTime = shakeTime * 4;
		shakeSign = false;
	}

	// public void setBgImage(Image bgImage){
	// this.bgImage=bgImage;
	// this.bgImageX=(canvasWidth-bgImage.getWidth())/2;
	// this.bgImageY=(canvasHeight-bgImage.getHeight())/2;
	// }

	public void setCanvasListener(CanvasListener canvasListener) {
		g_canvasListener = canvasListener;
	}

	public void canvasAction(CanvasCommand canvasCommand) {
		if (g_canvasListener != null) {
			g_canvasListener.canvasCommandAction(canvasCommand, this);
		}
	}

	protected void keyPressed(int keyCode) {
		keyCode = convertKey(keyCode);

		handleKeyPress(keyCode);
	}

	protected void handleKeyPress(int keyCode) {

	}

	protected void keyReleased(int keyCode) {
		keyCode = convertKey(keyCode);
		handleKeyRelease(keyCode);

	}

	protected void handleKeyRelease(int keyCode) {

	}

	private int convertKey(int keyCode) {
		int key = keyCode;
		if(mapActionToNumber){
			int gaction = getGameAction(keyCode);
			switch (gaction) {
			case Canvas.UP:
				key = Canvas.KEY_NUM2;
				break;
			case Canvas.DOWN:
				key = Canvas.KEY_NUM8;
				break;
			case Canvas.LEFT:
				key = Canvas.KEY_NUM4;
				break;
			case Canvas.RIGHT:
				key = Canvas.KEY_NUM6;
				break;
			case Canvas.FIRE:
				key = Canvas.KEY_NUM5;
				break;
			}
			if (keyCode == -6) {
				key = Canvas.KEY_NUM1;
			} else if (keyCode == -7) {
				key = Canvas.KEY_NUM3;
			} else if (keyCode == 6) {
				key = Canvas.KEY_NUM1;
			} else if (keyCode == 7) {
				key = Canvas.KEY_NUM3;
			} else if (keyCode == -57379) {
				key = Canvas.KEY_NUM4;
			} else if (keyCode == -57380) {
				key = Canvas.KEY_NUM6;
			}
		}
		return key;
	}
	
}

⌨️ 快捷键说明

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