Programming Technology

J2ME下实现滚动文字效果

J2ME下实现滚动文字也很简单,就是基于剪裁区的应用

看一下效果:

滚动文字效果演示

来看一下代码:

  1. private int tipStringPos = SCREEN_WIDTH; //当前字符串左边的位置
  2. private int tipStringSpeed = 2; //字符串移动速度
  3. private static final int TIPSTR_LEFT = 5 - 5; //左边消失绘制坐标
  4. private static final int TIPSTR_RIGHT = 123 + 5; //右边出现绘制坐标
  5.  
  6. private static final int FONT_HEIGHT = 11; //字体高度 font.getHeight() 不准确
  7.  
  8. /**
  9.  * @param Graphics g - 画刷
  10.  * @param String str - 所画字符串
  11.  * @param int height - 字符串高度
  12.  * @param int rectX - 剪裁区顶点X坐标
  13.  * @param int rectY - 剪裁区顶点Y坐标
  14.  * @param int rectWidth - 剪裁区宽度
  15.  * @param int rectHeight - 剪裁区高度
  16.  */
  17.  
  18. private void drawTipString(Graphics g, String str, int height,
  19.                         int rectX, int rectY, int rectWidth, int rectHeight) {
  20.         int strWidth = g.getFont().stringWidth(str);
  21.         int strHeight = FONT_HEIGHT;
  22.        
  23.         tipStringPos -= tipStringSpeed;
  24.         if (tipStringPos + strWidth < TIPSTR_LEFT) {
  25.                 tipStringPos = TIPSTR_RIGHT;
  26.         }
  27.  
  28.         //裁减区
  29.         int oldClipX = g.getClipX();
  30.         int oldClipY = g.getClipY();
  31.         int oldClipWidth = g.getClipWidth();
  32.         int oldClipHeight = g.getClipHeight();
  33.  
  34.         g.setClip(rectX, rectY, rectWidth, rectHeight);
  35.  
  36.         g.drawString(str, tipStringPos, height - strHeight / 2,
  37.                                  Graphics.LEFT | Graphics.TOP);
  38.         g.setClip(oldClipX, oldClipY, oldClipWidth, oldClipHeight);
  39. }

原理是很简单的,我感觉算法还是比较幼稚的,呵呵,你的算法呢?

发表评论 ( 如果您刚刚提交过评论,但是还没有被显示出来,请点击这里刷新一下: 刷新评论 )

标题

内容*

昵称*

电子邮件

个人网页


 authimage