服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

线程控制动画

 


线程是程序的一部分,是系统调度的基本单位。线程是控制动画的理想选择。将动画的工作放在线程上,可以释放出程序的其他部分来处理别的任务。
线程的现实是通过java.lang中的thread类,要使某一个类能使用线程,必须实现runnable接口,该接口包含了唯一一个方法run()。run()方法是线程类的核心,--------动画程序中产生运动。通过调用线程的start ()方法,致使run()方法被调用。下边这个程序描绘了一个运动中的圆。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class cartoon extends japplet implements runnable
{
graphics screenbuffer = null;//创建图形缓冲区
image screenimage = null;
private thread runner;
private int x = 5;
private int move = 1;

public void init ( )
{
screenimage = createimage ( 230, 160 );
screenbuffer = screenimage.getgraphics ( );
}
public void start ( )
{
if (runner == null)
{
runner = new thread( this );
runner.start();
}
}
public void run( )
{
thread circle = thread.currentthread ( );
while ( runner == circle )//指向同一对象,便开始运行
{
x += move;
if ( ( x > 105 ) || ( x < 5 ))
move *= -1;
repaint ( );
}
}
public void drawcircle( graphics gc )
{
graphics2d g2d = ( graphics2d ) gc;
g2d.setcolor ( color.blue );
g2d.fillrect ( 0, 0, 100, 100 );
g2d.setcolor ( color.yellow );
g2d.fillrect ( 100, 0, 100, 100 );
g2d.setcolor ( color.red );
g2d.filloval ( x, 5, 90, 90 );
}
public void paint( graphics g )
{
screenbuffer.setcolor ( color.white );
screenbuffer.fillrect (0,0,96,60);
drawcircle ( screenbuffer );
//将缓冲区的图像复制到主缓冲区中
g.drawimage ( screenimage, 130, 100, this );
}
}


扫描关注微信公众号