骑猪闯天下

J2ME随笔,记录成长的脚步

统计

留言簿(3)

阅读排行榜

评论排行榜

[J2ME-原创]波浪字体效果代码

波浪字体效果代码,这是自己早期时研究的一个效果代码,代码比较完整,新建工程把类加进去即可看出效果。

全部代码如下:
/**
 * @function: 波浪字体效果代码.
 * 
@author:   杜长风
 * @time:       080710
 
*/

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class DrawCanvas extends MIDlet implements CommandListener {
    
private Command exitCommand;
    
private HCanvas sg;
    
    
public DrawCanvas() 
    
{
        exitCommand 
= new Command("Exit", Command.EXIT, 1);
        sg 
= new HCanvas();
        sg.addCommand(exitCommand);
        sg.setCommandListener(
this);
        Display.getDisplay(
this).setCurrent(sg);
    }

    
    
protected void startApp(){
    }

    
    
protected void pauseApp() {
    }

    
    
protected void destroyApp(boolean arg0)
    }

    
    
public void commandAction(Command c, Displayable d) {
        
if (c == exitCommand) 
        destroyApp(
false); 
        notifyDestroyed();
        }

    }
 
}



class HCanvas extends Canvas implements Runnable
{
    
//要显示的字符
    private String str=new String("W  E L C O M  E");
    
    
//上下浮动的高度序列.
    private int[] ak={1,2,3,4,5,6,7,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,7,6,5,4,3,2};
    
    
boolean kaishi=true;
    
    
//设置循环标志位,一定要>=字符串长度.
    private int k=15;

    
public HCanvas (){
        
new Thread(this).start();
    }
 

    
protected void paint(Graphics g){
        g.setColor(
220);
        g.fillRect(
0,0,getWidth(),getHeight());
        g.setColor( 
255255,255);
        Font font 
= Font.getFont(Font.FACE_SYSTEM,Font.STYLE_UNDERLINED,Font.SIZE_MEDIUM); 
        g.setFont(font);

        
/**
         * 1.画字符串,是一个字符一个字符画上去的.
         * 2."20+i*5",是横坐标,及字间距的宽度
         * 3."40-ak[k-i]",是纵坐标,及上下浮动的高度.注意:一个ak周期的长度,即:1->8->1共15一定
         *      要大于至少等于循环标志位长度.即:
         *         字符串长度<=循环标志位长度<=ak周期长度<=ak至少有两个周期.
         * 
         * 4.经过测试,在字符串小于15个时,以上数字参数最佳.
         * 
         
*/

        
for(int i=0;i< str.length();i++){
            g.drawString(str.substring(i,i
+1),   80+i*5,    40-ak[k-i],    0);                        
            System.out.println(
"ak[k-i] = " + ak[k-i] );
        }
 
        System.out.println(
"********************************" );
    }

    
    
public void run(){
        
while(kaishi){
            
try {
                repaint(); 
//再描绘
                Thread.sleep(100); //等待一定时间
                k++;        //循环参数,ak至少有两个周期,即至少是2倍K的值.
                if(k>(ak.length-1)) 
                    k
=15;   //从新开始循环.
            }
catch(InterruptedException e){}
        }
 
    }

}
 

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


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


网站导航: