1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| package motionblur;
import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage;
public class motion extends Applet implements Runnable {
int delay = 30; int heyght = 300; int width = 500;
public void start() { new Thread(this).start(); }
public void run() { int x = 170, y = 120; int xc[] = {0, 100, 200}; int yc[] = {0, 0, 0}; double cnt = 0; boolean d = true; setSize(width, heyght); BufferedImage screen = new BufferedImage(width, heyght, BufferedImage.TYPE_INT_ARGB); Graphics g = screen.getGraphics(); Graphics appletGraphics = getGraphics(); appletGraphics.setColor(Color.white); appletGraphics.fillRect(0, 0, width, heyght); appletGraphics.setColor(Color.black); appletGraphics.drawString("loading...", heyght / 2 - 5, width / 2 - 80);
BufferedImage r = new BufferedImage(15, 15, BufferedImage.TYPE_INT_ARGB); BufferedImage gr = new BufferedImage(15, 15, BufferedImage.TYPE_INT_ARGB); BufferedImage b = new BufferedImage(15, 15, BufferedImage.TYPE_INT_ARGB); Graphics rg = r.getGraphics(); Graphics grg = gr.getGraphics(); Graphics bg = b.getGraphics(); rg.setColor(Color.red); rg.fillOval(0, 0, 15, 15); grg.setColor(Color.green); grg.fillOval(0, 0, 15, 15); bg.setColor(Color.blue); bg.fillOval(0, 0, 15, 15);
int tick = 0, fps = 0, acc = 0; long lastTime = System.nanoTime();
appletGraphics.setColor(Color.black); appletGraphics.fillRect(0, 0, width, heyght); while (true) {
long now = System.nanoTime(); acc += now - lastTime; tick++; if (acc >= 1000000000L) { acc -= 1000000000L; fps = tick; tick = 0; }
lastTime = now; g.setColor(new Color(0, 0, 0, 70)); g.fillRect(0, 0, width, heyght); g.drawImage(r, x, y, this); g.drawImage(r, xc[0], yc[0], this); g.drawImage(gr, x + 15, y + 15, this); g.drawImage(gr, xc[1], yc[1], this); g.drawImage(b, x + 30, y + 30, this); g.drawImage(b, xc[2], yc[2], this); x = 170 + (int) (50 * Math.cos(cnt)); y = 120 + (int) (50 * Math.sin(cnt)); if (d) { if (cnt < 180) { cnt += 0.09; } else { d = false; } } else if (cnt > 0) { cnt -= 0.09; } else { d = true; } if (xc[0] < 300) { for (byte i = 0; i < 3; i++) { xc[i] += 3; yc[i] += 3; } } else { for (byte i = 0; i < 3; i++) { xc[i] = 0 + i * 100; yc[i] = 0; } }
g.setColor(Color.white); g.drawString("FPS " + String.valueOf(fps), 20, 30);
appletGraphics.drawImage(screen, 0, 0, null);
try { Thread.sleep(delay); } catch (Exception e) { }
if (!isActive()) { return; } } } } |