【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了TreeTest.java相关资料,希望对各位网友有所帮助!
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
public class TreeTest extends Applet implements Runnable
{
// 动画线程
private Thread animation;
private VolatileImage offscreen;
private TreeScene scene;
private final long framerate = 1000/40; // 40 fps
public void init()
{
AsteroidGroup group = new AsteroidGroup();
group.init(this);
group.MIN_X_POS = 0;
group.MIN_Y_POS = 0;
group.MAX_X_POS = getSize().width;
group.MAX_Y_POS = getSize().height;
scene = new TreeScene(getBounds());
Random random = new Random();
for(int i = 0; i < 5; i++)
{
Asteroid ast = new Asteroid(group);
ast.setPos(100, 100);//Math.abs(random.nextInt(getSize().width)),
//Math.abs(random.nextInt(getSize().height)));
scene.add(ast);
}
offscreen = createVolatileImage(getSize().width, getSize().height);
animation = new Thread(this);
} // init
public void start()
{
//启动动画线程
animation.start();
}
public void stop()
{
animation = null;
}
public void run()
{
long lastTime;
long elapsedTime;
Thread t = Thread.currentThread();
while (t == animation)
{
lastTime = System.currentTimeMillis();
repaint();
elapsedTime = System.currentTimeMillis() - lastTime;
try
{
if(elapsedTime < framerate)
{
Thread.sleep(framerate - elapsedTime);
}
else
{
// 不要让垃圾收集器饿着
Thread.sleep(5);
}
}
catch(InterruptedException e)
{
break;
}
}
} // run
public void update(Graphics g)
{
scene.update();
paint(g);
}
void paintScene()
{
do
{
if (offscreen.validate(getGraphicsConfiguration()) ==
VolatileImage.IMAGE_INCOMPATIBLE)
{
offscreen = createVolatileImage(getSize().width, getSize().height);
}
Graphics2D g2d = offscreen.createGraphics();
g2d.setPaint(Color.WHITE);
g2d.fill(new Rectangle2D.Double(0, 0, getSize().width, getSize().height));
scene.paint(g2d);
g2d.dispose();
} while (offscreen.contentsLost());
}
public void paint(Graphics g)
{
do
{
// 如果屏外图像无效的话恢复它
if(offscreen.validate(getGraphicsConfiguration()) == VolatileImage.IMAGE_INCOMPATIBLE)
{
offscreen = createVolatileImage(getSize().width, getSize().height);
}
// 绘制场景
paintScene();
// 如果内容丢失则循环
} while(offscreen.contentsLost());
g.drawImage(offscreen, 0, 0, this);
} // paint
} // TreeTest