📄 textscreen.java
字号:
package com.centerscore.game;
import javax.microedition.lcdui.*;
class TextScreen extends Canvas implements Runnable {
final static int TEXT_HELP = 0;
final static int TEXT_CREDITS = 1;
final static int MAX_TEXT_LINES = 14;
boolean stopped;
private int yOffset, yDelta;
private boolean partialDraw, manualScroll;
/* Start Addition 21-03-2003 for external events */
private boolean inActive;
/* End Addition 21-03-2003 */
private int messageId;
private Image img;
private GameMidlet m_pMidlet;
/* Start Commented 23-04-2003 for chinese support */
/*
private String[][] text = {
{
"1 up-left",
"3 up-right",
"7 down-left",
"9 down-right",
"jump on squares to",
"change them to",
"target color.",
"jumping off the",
"playfield results",
"in a fatal plummet",
"unless disc is",
"there.",
"avoid all objects",
"that are not green."
},
{
"copyright 2002",
"columbia pictures",
" industries inc.",
"all rights reserved",
" ",
"published by",
"sony pictures",
" digital",
" ",
"developed by",
"centerscore inc.",
" ",
"original game",
"d. gottlieb and co."
}
};
*/
/* End Modified 23-04-2003 */
private int TEXT_W = 118;
/* Start Modified 25-04-2003 for chinese support */
private int TEXT_H = 93;
//private int TEXT_H = 99;
/* End Modified 25-04-2003 */
private int Y_OFFSET_MAX = - MAX_TEXT_LINES * 9 + TEXT_H;
TextScreen(GameMidlet midlet) {
setCommandListener(midlet);
addCommand(midlet.m_cmdBack);
m_pMidlet = midlet;
}
void init(int messageId) {
this.messageId = messageId;
stopped = false;
yOffset = 0;
yDelta = -1;
partialDraw = false;
manualScroll = false;
img = Sprite.imgOffscreen;
Graphics g = Sprite.gOffscreen;
g.setColor(Sprite.BG_COLOR);
/* Start Modified 23-04-2003 for chinese support */
g.fillRect(0, 0, TEXT_W, MAX_TEXT_LINES * 15);
int y = 0;
g.setColor(250,250,4);
g.setFont(Globals.font);
if(messageId == 0){
for (int i = 0; i < 8; i++) {
g.drawString(Globals.chineseString[Globals.HELP_TXT_OFFSET+i],
0, y, g.TOP | g.LEFT);
y += 15;
}
}else {
char ch;
for (int i = 0; i < 9; i++) {
ch = Globals.chineseString[Globals.CREDITS_TXT_OFFSET+i].charAt(0);
g.drawString(Globals.chineseString[Globals.CREDITS_TXT_OFFSET+i],
0, y, g.TOP | g.LEFT);
if((ch >= 63 && ch <= 94) || (ch == 32)){
y += 13;
}else {
y += 15;
}
}
}
/* End Modified 23-04-2003 */
new Thread(this).start();
}
protected void paint(Graphics g) {
if (!partialDraw) {
g.setColor(Sprite.BG_COLOR);
g.fillRect(0, 0, Globals.SCREEN_W, Globals.SCREEN_H);
/* Start Modified 25-04-2003 for chinese support */
g.setColor(255,255,4);
g.setFont(Globals.font);
if (messageId == TEXT_CREDITS) {
//VALLI MR2 x 40 - 33
g.drawString(Globals.chineseString[Globals.MENU_TXT_OFFSET+2],
33,13,g.TOP|g.LEFT);
//Sprite.drawWord(g, 40, 13, "credits");
} else {
g.drawString(Globals.chineseString[Globals.MENU_TXT_OFFSET+3],
40,13,g.TOP|g.LEFT);
//Sprite.drawWord(g, 40, 13, " help ");
}
Sprite.drawClipped(g, Sprite.IMG_ALL, 0, 0, Sprite.g_arr2ClipInfoStuff, 4, 1); // header+TM
Sprite.drawClipped(g, Sprite.IMG_ALL, 17, 16, Sprite.g_arr2ClipInfoStuff, 0, 1); // large qbert left
Sprite.drawClipped(g, Sprite.IMG_ALL, 95, 16, Sprite.g_arr2ClipInfoStuff, 5, 1); // large qbert right
g.setColor(0xf69435);
g.drawRect(3, 26, 121, 97);
g.setColor(Sprite.BG_COLOR);
g.drawLine(15, 26, 15 + 14, 26);
g.drawLine(92, 26, 92 + 14, 26);
partialDraw = true;
}
g.setClip(5, 29, TEXT_W, TEXT_H);
g.drawImage(img, 5, 29 + yOffset, Globals.GFX_TOPLEFT);
/* End Modified 25-04-2003 */
g.setClip(0, 0, Globals.SCREEN_W, Globals.SCREEN_H);
}
protected void keyPressed(int key) {
switch (getGameAction(key)) {
case Canvas.FIRE:
m_pMidlet.commandAction(m_pMidlet.m_cmdBack, this);
break;
case Canvas.UP:
yDelta = 1;
manualScroll = true;
break;
case Canvas.DOWN:
manualScroll = true;
yDelta = -1;
break;
}
}
protected void keyReleased(int key) {
switch (getGameAction(key)) {
case Canvas.UP:
yDelta = 0;
repaint();
break;
case Canvas.DOWN:
yDelta = 0;
repaint();
break;
}
}
public void run() {
while (!stopped) {
/* Start Addition 21-03-2003 for external events */
if(!inActive){
/* End Addition 21-03-2003 */
yOffset += yDelta;
if (yOffset > 0) {
yOffset = 0;
if (manualScroll) {
yDelta = 0;
} else {
yDelta = -1;
}
}
if (yOffset < Y_OFFSET_MAX) {
yOffset = Y_OFFSET_MAX;
if (manualScroll) {
yDelta = 0;
} else {
yDelta = 1;
}
}
repaint();
}
try {
Thread.sleep(100);
} catch (Exception ex) {}
}
}
protected void showNotify() {
partialDraw = false;
/* Start Addition 21-03-2003 for external events */
inActive = false;
/* End Addition 21-03-2003 */
}
/* Start Addition 21-03-2003 for external events */
protected void hideNotify(){
inActive = true;
}
/* End Addition 21-03-2003 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -