📄 efficient.java
字号:
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.awt.image.*;
public class Efficient extends Applet implements Runnable
{
private Image img[],showImage;
private MediaTracker imageTracker;
private int ImageW,ImageH,totalImage = 5,currentImage,nextImage;
private Thread thread;
private int delay;
private int totalPix,pix1[],pix2[],pix3[],pix4[],pix5[],pixA[],pixB[];
public void init()
{
this.setBackground(Color.black);
img = new Image[totalImage];
imageTracker = new MediaTracker(this);
String s = new String("");
for(int i=0; i<totalImage; i++)
{
s = getParameter("image" + (i+1));
//System.out.println(s);
img[i] = getImage(getCodeBase(),s);
imageTracker.addImage(img[i],0);
}
try
{
imageTracker.waitForID(0);
}
catch(InterruptedException e)
{
}
if(getParameter("delay") == null)
{
delay = 3000;
}
else
{
delay = Integer.parseInt(getParameter("delay"));
}
ImageW = img[0].getWidth(this);
ImageH = img[0].getHeight(this);
totalPix = ImageW*ImageH;
pix1 = new int[totalPix];
PixelGrabber PG1 = new PixelGrabber(img[0],0,0,ImageW,ImageH,pix1,0,ImageW);
try
{
PG1.grabPixels();
}
catch(InterruptedException ex)
{
}
pix2 = new int[totalPix];
PixelGrabber PG2 = new PixelGrabber(img[1],0,0,ImageW,ImageH,pix2,0,ImageW);
try
{
PG2.grabPixels();
}
catch(InterruptedException ex)
{
}
pix3 = new int[totalPix];
PixelGrabber PG3 = new PixelGrabber(img[2],0,0,ImageW,ImageH,pix3,0,ImageW);
try
{
PG3.grabPixels();
}
catch(InterruptedException ex)
{
}
pix4 = new int[totalPix];
PixelGrabber PG4 = new PixelGrabber(img[3],0,0,ImageW,ImageH,pix4,0,ImageW);
try
{
PG4.grabPixels();
}
catch(InterruptedException ex)
{
}
pix5 = new int[totalPix];
PixelGrabber PG5 = new PixelGrabber(img[4],0,0,ImageW,ImageH,pix5,0,ImageW);
try
{
PG5.grabPixels();
}
catch(InterruptedException ex)
{
}
currentImage = 0;
pixA = new int[totalPix];
pixB = new int[totalPix];
showImage = img[0];
thread = new Thread(this);
thread.start();
}
public void paint(Graphics g)
{
g.drawImage(showImage,0,0,this);
}
public void update(Graphics g)
{
paint(g);
}
public void run()
{
if(thread == null)
{
thread = new Thread(this);
thread.start();
}
while(true)
{
try
{
thread.sleep(delay);
nextImage = ((currentImage+1)%totalImage);
if (currentImage ==0)
{
System.arraycopy(pix1,0,pixA,0,totalPix);
System.arraycopy(pix2,0,pixB,0,totalPix);
showImage = createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
if (currentImage ==1)
{
System.arraycopy(pix2,0,pixA,0,totalPix);
System.arraycopy(pix3,0,pixB,0,totalPix);
showImage = createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
if (currentImage ==2)
{
System.arraycopy(pix3,0,pixA,0,totalPix);
System.arraycopy(pix4,0,pixB,0,totalPix);
showImage = createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
if (currentImage ==3)
{
System.arraycopy(pix4,0,pixA,0,totalPix);
System.arraycopy(pix5,0,pixB,0,totalPix);
showImage = createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
if (currentImage ==4)
{
System.arraycopy(pix5,0,pixA,0,totalPix);
System.arraycopy(pix1,0,pixB,0,totalPix);
showImage = createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
while(true)
{
for(int i=0; i<(int)(ImageH/10);i++)
{
try
{
thread.sleep(20);
for(int j=0; j<ImageH; j+=(int)(ImageH/10))
{
for(int k=0; k<ImageW; k++)
{
pixA[ImageW*(j+i) + k] = pixB[ImageW*(j+i) + k];
}
}
}
catch(InterruptedException e){}
showImage = createImage(new MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
break;
}
currentImage = nextImage;
repaint();
}
catch(InterruptedException e)
{
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -