formatchnstring.java

来自「一个j2me的手机游戏」· Java 代码 · 共 112 行

JAVA
112
字号
package lee_chan;

import javax.microedition.lcdui.*;

public class FormatCHNString
{
  public FormatCHNString(String str,int width,int height,Font font)
  {
    helpStr=str;
    strLen = str.length();
    beginLine=0;
    this.font=font;

    String benchStr="lee";
    char[] bufferStr=benchStr.toCharArray();
    int charWidth=font.charsWidth(bufferStr,0,bufferStr.length);
    lineStrLen=width/charWidth;
    strHeightNum=height/font.getHeight();

    endLine=strHeightNum;
    maxLine =  strLen/lineStrLen + (strLen%lineStrLen==0? 0:1);
  }

  public void paint(Graphics g)
  {
    int i;
    for(i=beginLine;i<endLine;++i)
    {
      if((i+1)*lineStrLen<=strLen)
      {
        g.drawString(helpStr.substring(i*lineStrLen,(i+1)*lineStrLen),0,
                     font.getHeight()*(i-beginLine),Graphics.LEFT|Graphics.TOP);
      }
      else
      {
        g.drawString(helpStr.substring(i*lineStrLen,strLen),0,
                     font.getHeight()*(i-beginLine),Graphics.LEFT|Graphics.TOP);
      }
    }
  }

  public void action()
  {
    if((allAction&KeyMask.MASK_KEY_UP_FLAG)!=0)
    {
      allAction &= ~KeyMask.MASK_KEY_UP_FLAG;
      if(beginLine != 0)
      {
        --beginLine;
        --endLine;
      }
    }
    else if((allAction&KeyMask.MASK_KEY_DOWN_FLAG)!=0)
    {
      allAction &= ~KeyMask.MASK_KEY_DOWN_FLAG;
      if(endLine != maxLine)
      {
        ++beginLine;
        ++endLine;
      }
    }
  }

  public void judgeKeyCode(int keyCode,int gameKeyCode)
  {
    switch(gameKeyCode)
    {
      case Canvas.UP:
        if((((allAction&KeyMask.MASK_KEY_UP)==0)
            &&((allAction&KeyMask.MASK_KEY_UP_FLAG)==0)))
        {
          allAction|=KeyMask.MASK_KEY_UP_FLAG|KeyMask.MASK_KEY_UP;
        }
        break;
      case Canvas.DOWN:
        if((((allAction&KeyMask.MASK_KEY_DOWN)==0)
            &&((allAction&KeyMask.MASK_KEY_DOWN_FLAG)==0)))
        {
          allAction|=KeyMask.MASK_KEY_DOWN_FLAG|KeyMask.MASK_KEY_DOWN;
        }
        break;
    }
  }
  public void reInit()
  {
    allAction = 0;
    beginLine = 0;
    endLine = strHeightNum;
  }
  public void freeKey(int keyCode,int gameKeyCode)
  {
    switch(gameKeyCode)
    {
      case Canvas.UP:
        allAction&=~KeyMask.MASK_KEY_UP;
        break;
      case Canvas.DOWN:
        allAction&=~KeyMask.MASK_KEY_DOWN;
        break;
    }
  }

  private int beginLine;
  private int endLine;
  private int allAction;
  private int lineStrLen;
  private int strHeightNum;
  private String helpStr;
  private int strLen;
  private Font font;
  private int maxLine;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?