#isubb#package untitled1;
import javax.microedition.lcdui.*;
public class tetriscanvasdemo extends canvas implements runnable{
int drawx,drawy;
image source;
image copy;
tetriscanvasdemo()
{
drawx=this.getwidth()/2;
drawy=0;
copy=image.createimage(this.getwidth(),this.getheight());
}
protected void paint(graphics g)
{
graphics offscreen=copy.getgraphics();
offscreen.setcolor(255,255,255);
offscreen.fillrect(0,0,this.getwidth(),this.getheight());
offscreen.setcolor(0,0,0);
offscreen.fillrect(drawx,drawy,10,10);
g.drawimage(copy,0,0,graphics.left |graphics.top);
}
public void run()
{
while(true)
{
this.down();
repaint();
try
{
thread.sleep(50);;
}
catch(interruptedexception e)
{
system.out.println("sleep error:"+e.getmessage());
}
}
}
public void start()
{
thread t=new thread(this);
t.start();
}
protected void down()
{
if(drawy {
drawy=drawy+1;
}
else
{
drawy=0;
}
}
}
[b] 在这个类中,如果没有implemnt runable那就是一般的canvas界面,执行完构造函数再paint函数显示就完了。加了runable,在start里,[color=#ff0000]thread t=new thread(this)就将此canvas定义为一个线程了,[/color]t.start()启动线程,在run里就可以写这个线程中做些什么了。
[/b]