nodezloader.java
来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 125 行
JAVA
125 行
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
import magic.actor2d.*;
import magic.awtex.*;
import magic.debug.*;
import magic.gamelet.*;
import magic.graphics.*;
import magic.scene.*;
import magic.util.*;
public class NodezLoader implements Runnable
{
private BufferedImage offscreen;
private Rectangle2D bounds;
private Label2D loading;
private Graphics2D g2d;
private Thread animation;
private final long MIN_TIME = 5000;
private boolean finished;
private Node[] nodes;
private final int NUM_NODES = 8;
private final double RADIUS = 125;
public NodezLoader(Rectangle2D r, NodeGroup grp, Graphics2D g)
{
bounds = r;
g2d = g;
offscreen = new BufferedImage((int)r.getWidth(), (int)r.getHeight(), BufferedImage.TYPE_INT_RGB);
finished = false;
double anchorX = bounds.getWidth()/2;
double anchorY = bounds.getHeight()/2;
nodes = new Node[NUM_NODES];
for(int i = 0; i < NUM_NODES; i++)
{
nodes[i] = new Node(grp, i, new Vector2D.Double(
anchorX + (RADIUS * MagicUtils.cos(i*(360/NUM_NODES))),
anchorY + (RADIUS * MagicUtils.sin(i*(360/NUM_NODES)))));
}
loading = new Label2D(new Font("Helvetica", Font.PLAIN, 30), "loading...", Color.GREEN.brighter());
loading.centerOn(bounds, g);
}
public boolean isFinished()
{
return finished;
}
public void start()
{
animation = new Thread(this);
animation.start();
}
public void stop()
{
animation = null;
}
public void run()
{
long startTime = System.currentTimeMillis();
Thread t = Thread.currentThread();
while(t == animation)
{
paint();
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{
break;
}
if(System.currentTimeMillis() - startTime > 9*MIN_TIME/10)
{
loading.setPaint(Color.RED);
}
if(System.currentTimeMillis() - startTime > MIN_TIME)
{
finished = true;
}
}
}
public void paint()
{
Graphics2D g = offscreen.createGraphics();
g.setPaint(Color.BLACK);
g.fill(bounds);
for(int i = 0; i < NUM_NODES; i++)
{
nodes[i].update();
nodes[i].paint(g);
}
int prev = nodes[NUM_NODES-1].getAnimIndex();
int temp;
for(int i = 0; i < NUM_NODES; i++)
{
temp = nodes[i].getAnimIndex();
nodes[i].setAnimIndex(prev);
prev = temp;
}
loading.paint(g);
g2d.drawImage(offscreen, 0, 0, AnimationStrip.observer);
}
} // NodezLoader
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?