📄 abstractwindow.java
字号:
package com.ismyway.anyview;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
/**
* <p>Title: AnyView</p>
*
* <p>Description: E680(I) Reader</p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: www.ismyway.com</p>
*
* @author ZhangJian
* @version 1.0
*/
public abstract class AbstractWindow implements KeyActionListener {
public final static int OPENING = 1;
public final static int HIDE = 2;
public final static int CLOSED = 3;
public final static int ANCHOR = Graphics.LEFT | Graphics.TOP;
protected int width;
protected int height;
protected int LEFT = 0; //left指当前窗口左上角的X坐标在屏幕上的实际X坐标值
protected int TOP = 0; //top指当前窗口左上角的Y坐标在屏幕上的实际Y坐标值
protected int PRESSED_X, PRESSED_Y; //
protected int RELEASE_X, RELEASE_Y; //
protected int WINDOW_STATE = CLOSED;
protected boolean TOUCH_EVENT = false; //触摸屏事件是否有效
public AbstractWindow() {
}
protected abstract Image getWindow();
protected abstract void destroy();
protected abstract boolean bof();
protected void setWindowState(int state) {
WINDOW_STATE = state;
}
protected int getWidth() {
return width;
}
protected int getHeight() {
return height;
}
protected int getLeft() {
return LEFT;
}
protected int getTop() {
return TOP;
}
protected void pointerPressed(int x, int y) {
if (AnyView.readType == 1) { //横屏
PRESSED_X = TOP - y;
PRESSED_Y = x - LEFT;
} else {
PRESSED_X = x - LEFT;
PRESSED_Y = y - TOP;
}
}
protected void pointerDragged(int x, int y) {
}
protected void pointerReleased(int x, int y) {
RELEASE_X = x - LEFT;
RELEASE_Y = y - TOP;
if (AnyView.readType == 1) { //横屏
RELEASE_X = TOP - y;
RELEASE_Y = x - LEFT;
}
}
protected boolean contains(int x, int y) {
return (x > 0 && x < width && y > 0 && y < height);
}
//根据屏幕方式映射按键
final protected int mapKey(int keyCode) {
if (AnyView.readType == 1) { //横屏
switch (keyCode) {
case -1: //up
return -4; //right
case -2: //down
return -3; //left
case -3: //left
return -1; //up
case -4: //right
return -2; //down
}
}
return keyCode;
}
//根据屏幕方式映射坐标到当前窗口坐标
final protected void mapPoint(int x, int y) {
}
/**
* 返回当前窗口的状态
* @return int
*/
public int getWindowState() {
return WINDOW_STATE;
}
protected void keyAction(int keyStates) {
// Left
if ((keyStates & GameCanvas.LEFT_PRESSED) != 0) {
keyLeft();
}
// Right
if ((keyStates & GameCanvas.RIGHT_PRESSED) != 0) {
keyRight();
}
// Up
if ((keyStates & GameCanvas.UP_PRESSED) != 0) {
keyUp();
}
// Down
if ((keyStates & GameCanvas.DOWN_PRESSED) != 0) {
keyDown();
}
//Game A
if ((keyStates & GameCanvas.GAME_A_PRESSED) != 0) {
keyGameA();
}
//Game B
if ((keyStates & GameCanvas.GAME_B_PRESSED) != 0) {
keyGameB();
}
//Fire
if ((keyStates & GameCanvas.FIRE_PRESSED) != 0) {
keyFire();
}
}
public void keyGameA() {
}
public void keyGameB() {
}
public void keyLeft() {
}
public void keyRight() {
}
public void keyUp() {
}
public void keyDown() {
}
public void keyFire() {
}
public boolean getTouchEvent() {
return TOUCH_EVENT;
}
public void setLocation(int x, int y) {
if (AnyView.readType == 1) { //横屏
if (x + height > AnyView.ScreenWidth) {
LEFT = AnyView.ScreenWidth - height;
} else {
LEFT = x;
}
if (y < width) {
TOP = width;
} else {
TOP = y;
}
} else { //竖屏
if (width + x > AnyView.ScreenWidth) {
LEFT = AnyView.ScreenWidth - width;
} else {
LEFT = x;
}
if (y + height > AnyView.ScreenHeight) {
TOP = AnyView.ScreenHeight - height;
} else {
TOP = y;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -