📄 ctext.java
字号:
import com.nokia.mid.ui.DirectGraphics;
import com.nokia.mid.ui.DirectUtils;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
/*
* 文本类
* 用于显示场景提示信息、人物对话等等
*/
public class CText
{
private Graphics m_offG;
private int m_textFieldTop; //文本框的顶部 Y 坐标
private int m_textState; //文本框状态: 0--不显示文本状态 1--向上滑动状态 2--向下滑动状态 3--显示文本状态
private String m_text[] = {"", "", "", ""}; //文本框内要显示的文字
private boolean m_canEnd = false;
//--------------------------------------------
// 构造函数
//--------------------------------------------
public CText(Graphics offG)
{
m_offG = offG;
reset();
}
//--------------------------------------------
// 重置
//--------------------------------------------
public void reset()
{
m_textFieldTop = 208;
m_textState = 0;
m_canEnd = false;
}
//--------------------------------------------
// 设置要显示的文本
//--------------------------------------------
public void setText(int line, String text)
{
m_text[line] = text;
}
//--------------------------------------------
// 清空所有文本
//--------------------------------------------
public void emptyText()
{
for (int i = 0; i < 4; i++)
{
m_text[i] = "";
}
}
//--------------------------------------------
// 文本是否显示完毕,如果是,则即将下滑
//--------------------------------------------
public void setCanEnd(boolean b)
{
m_canEnd = b;
}
//--------------------------------------------
// 启动文本,文本即将上滑
//--------------------------------------------
public void show()
{
m_textState = 1;
}
//--------------------------------------------
// 获得文本框状态
//--------------------------------------------
public int getTextState()
{
return m_textState;
}
//--------------------------------------------
// 文本的渲染
//--------------------------------------------
public void paint()
{
if (m_textState == 0) //如果处于不显示文本状态,则不画
return;
//滑动文本框上沿
if (m_textState == 1) //当文本框向上滑动时
{
m_textFieldTop -= 8;
if (m_textFieldTop < 145) //当上滑到某个地方时转为显示文本状态
m_textState = 3;
}
else if (m_textState == 2) //当文本框向下滑动时
{
m_textFieldTop += 8;
if (m_textFieldTop >= 208) //当下滑到屏幕以外时转为不显示文本状态
m_textState = 0;
}
//画出文本框
DirectGraphics dg = DirectUtils.getDirectGraphics(m_offG);
int tmpX[] = {0, 0, 176, 176}; //定义文本框的区域
int tmpY[] = {m_textFieldTop, 208, 208, m_textFieldTop};
dg.fillPolygon(tmpX, 0, tmpY, 0, 4, 0x99004E98); //文本框是半透明蓝色的
//文本框内写字
if (m_textState == 3) //当处于显示文本状态时才写字
{
m_offG.setColor(255, 255, 255);
for (int i = 0; i < 4; i++)
{
m_offG.drawString(m_text[i], 5, 145 + 22 * i, 0);
}
}
}
//--------------------------------------------
// 按键响应
//--------------------------------------------
public void keyPressed(int key)
{
if (key == Canvas.FIRE && m_textState == 3 && m_canEnd) //如果正在显示文本,按下确定键后文本框下滑
{
m_textState = 2;
m_canEnd = false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -