📄 shutter.java
字号:
// Compiled by PostGoods.com .
// Author: Haowen Huang
// Example of Chapter 17
// Source File Name: Shutter.java
import java.applet.Applet;
import java.awt.*;
public class Shutter extends Applet
implements Runnable
{
public void paint(Graphics g)
{
for(int i = nowSize; i <= imageHeight; i += eachPage)
g.drawImage(images[imageNo - 1], 0, i - 1, imageWidth, i, 0, i - 1, imageWidth, i, null);
}
public Shutter()
{
isStart = true;
delay = 200;
speed = 50;
}
public void update(Graphics g)
{
Graphics g1 = offScreenImage.getGraphics();
paint(g1);
g.drawImage(offScreenImage, 0, 0, null);
}
public void start()
{
thisThread = new Thread(this);
thisThread.start();
}
public void run()
{
do
{
do
{
repaint();
try
{
Thread.sleep(speed);
}
catch(Exception _ex) { }
nowSize++;
}
while(nowSize != eachPage + 2);
try
{
Thread.sleep(delay);
}
catch(Exception _ex) { }
if(imageNo >= amount)
imageNo = 1;
else
imageNo++;
nowSize = 1;
}
while(true);
}
public void init()
{
myTracker = new MediaTracker(this);
images = new Image[10];
imageNames = new String[10];
imageNo = 2;
amount = 0;
int i = 1;
do
{
imageNames[i - 1] = getParameter("pic" + i);
if(imageNames[i - 1] == null)
break;
amount++;
}
while(++i < 11);
for(int j = 0; j < amount; j++)
images[j] = getImage(getDocumentBase(), imageNames[j]);
if(getParameter("delay") != null)
delay = Integer.parseInt(getParameter("delay"), 10);
if(getParameter("speed") != null)
speed = Integer.parseInt(getParameter("speed"), 10);
speed = speed >= 10 ? speed : 10;
for(int k = 0; k < amount; k++)
myTracker.addImage(images[k], k);
try
{
myTracker.waitForAll();
}
catch(Exception _ex) { }
imageHeight = images[0].getHeight(this);
imageWidth = images[0].getWidth(this);
offScreenImage = createImage(imageWidth, imageHeight);
Graphics g = offScreenImage.getGraphics();
g.drawImage(images[0], 0, 0, null);
repaint();
eachPage = imageHeight / 5;
eachPage = imageHeight >= 30 ? eachPage : 5;
nowSize = 1;
}
private Color stringToColor(String s)
{
int i = Integer.decode("0x" + s.substring(0, 2)).intValue();
int j = Integer.decode("0x" + s.substring(2, 4)).intValue();
int k = Integer.decode("0x" + s.substring(4, 6)).intValue();
return new Color(i, j, k);
}
private MediaTracker myTracker;
private int imageHeight;
private int imageWidth;
private int nowSize;
private int imageNo;
private int amount;
private boolean isStart;
private int eachPage;
private Image images[];
private String imageNames[];
private Image offScreenImage;
private int delay;
private int speed;
private Thread thisThread;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -