📄 basecanvas.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 + -