⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 efficient.java

📁 Java Applet实例编程.rar
💻 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 + -