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

📄 ctext.java

📁 经典java手机游戏J2me(Rpj游戏)
💻 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 + -