线程控制动画

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

线程是程序的一部分,是系统调度的基本单位。线程是控制动画的理想选择。将动画的工作放在线程上,可以释放出程序的其他部分来处理别的任务。

线程的现实是通过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

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 );

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航