在J2ME 程序开发过程中经常需要实现游戏动画,例如简单的文字闪动,复杂的游戏界面变化等等,下面简单的介绍一下动画的原理,并附实现代码。
动画原理就是利用人的视觉暂留的生理特性,实现出来的一种假象。下面的代码就是不断的变化绘制的内容,实现文字的闪动。
程序的逻辑:每隔0.2秒变换一次绘制的内容,如果屏幕上没有绘制文字,则绘制,否则绘制文字。
实现代码如下:
package
welcomecanvas;
import javax.microedition.lcdui. * ;
public class DongHuaCanvas extends Canvas implements Runnable {
boolean b = true ; // 标志是否绘制字符串
public DongHuaCanvas() {
// 启动线程
Thread t = new Thread( this );
t.start();
}
protected void paint(Graphics g) {
// 清屏
g.setColor( 255 , 255 , 255 );
g.fillRect( 0 , 0 ,getWidth(),getHeight());
g.setColor( 0 , 0 , 0 );
// 根据标志变量绘制字符串
if (b == true ){
g.drawString( " 闪烁的文字 " , 50 , 50 ,Graphics.LEFT | Graphics.TOP);
}
}
/**
线程方法,每隔0.2秒改变一次标志变量,并重新绘制字符串
*/
public void run(){
while ( true ){
try {
Thread.sleep( 200 ); // 等待0.2秒
} catch (Exception e){}
b = ! b; // 改变标志变量
repaint(); // 重新绘制
}
}
}
import javax.microedition.lcdui. * ;
public class DongHuaCanvas extends Canvas implements Runnable {
boolean b = true ; // 标志是否绘制字符串
public DongHuaCanvas() {
// 启动线程
Thread t = new Thread( this );
t.start();
}
protected void paint(Graphics g) {
// 清屏
g.setColor( 255 , 255 , 255 );
g.fillRect( 0 , 0 ,getWidth(),getHeight());
g.setColor( 0 , 0 , 0 );
// 根据标志变量绘制字符串
if (b == true ){
g.drawString( " 闪烁的文字 " , 50 , 50 ,Graphics.LEFT | Graphics.TOP);
}
}
/**
线程方法,每隔0.2秒改变一次标志变量,并重新绘制字符串
*/
public void run(){
while ( true ){
try {
Thread.sleep( 200 ); // 等待0.2秒
} catch (Exception e){}
b = ! b; // 改变标志变量
repaint(); // 重新绘制
}
}
}