骑猪闯天下

J2ME随笔,记录成长的脚步

统计

留言簿(3)

阅读排行榜

评论排行榜

[J2ME-原创] 跑马灯功能

也没什么大悬念,就是一个坐标计算的问题

部分代码如下:

    
/**
     * 绘制文字跑马灯效果
     * 
@param g
     
*/

    
public void paint(Graphics g)
    
{
        
if (i_marqueeStr != null && engine.state != Engine.STATE_CONFIRM)// 有内容
        {
            g.setClip(
this.MARQUEE_X, this.MARQUEE_Y, SCREEN_WIDTH, 20);
            g.setColor(
25500);
            g.setFont(Font.getFont(Font.FACE_MONOSPACE,
                    Font.STYLE_PLAIN, Font.SIZE_SMALL));
            
this.drawMarqueeStr(g, i_marqueeStr, this.MARQUEE_X,
                    
this.MARQUEE_Y, SCREEN_WIDTH);

        }

    }

    
    
/**
     * 
@param g
     * Graphics - graphics
     * 
@param str
     * String - 要绘制的文字
     * 
@param x
     * int - 文字的起始坐标X
     * 
@param y
     * int - 文字的起始坐标Y
     * 
@param endX
     * int - 跑马灯区间的右边框X坐标
     * 
     * 
@return void
     * 
*/

    
private String i_marqueeStr = null;//跑马灯的内容
    private int marqueeStep = 0;
    
private void drawMarqueeStr(Graphics g, String str, int x, int y, int endX)
    
{
        
if(str.length() > 60)
            str 
= str.substring(0,60+ "";
        
        g.setFont(Engine.m_fDefaultFont);
        
int marqueeMoveWidth = 10;
        
if(str != null
        
{
            g.setClip(x, y, endX, g.getFont().getHeight() 
+ 3);
            g.setColor(
0xFDFE01);
            g.fillRect(x, y, endX, g.getFont().getHeight() 
+ 3);
            g.setColor(
0x2E00F4);
            
int strWidth = Util.getStringWidth(g.getFont(), str);//得到字长    
            if(strWidth + x > endX)//如果字长大于区间宽-滚动绘字
            {
                
int px = endX - marqueeMoveWidth * (marqueeStep++);
                g.drawString(str, px, y 
+ 20);
                
if(px + strWidth < x)
                    marqueeStep 
= 0;
            }

            
else//直接绘字
                g.drawString( str, x, y + 20);
        }

    }

posted on 2010-03-05 13:24 骑猪闯天下 阅读(352) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: