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

📄 wavepicture.java

📁 制作APPLET的简单动画!
💻 JAVA
字号:
import java.awt.*;
import java.applet.*;
import java.awt.image.*;

public class WavePicture extends Applet implements Runnable
{
  private Image img,iBack;
  private Image offI;
  private Graphics offG,gBack;
  private Thread thread = null;
  private MediaTracker imageTracker;
  private int startX,startY,flagW,flagH;
  private int backPix[],flagPix[],blackPix[];

  private int height,width;

  public void init()
  {
    img = getImage(getDocumentBase(),"flag.gif");
    imageTracker = new MediaTracker(this);
    imageTracker.addImage(img,0);

    width = this.size().width;
    height = this.size().height;

    startX = 20;
    startY = 20;

    try
    {
      imageTracker.waitForID(0);
    }
    catch(InterruptedException e){}

    flagW = img.getWidth(this);
    flagH = img.getHeight(this);
    flagPix = new int[flagW*flagH];
    backPix = new int[width*height];

    offI = createImage(width,height);
    offG = offI.getGraphics();

    iBack = createImage(width,height);
    gBack = iBack.getGraphics();
    gBack.setColor(Color.black);
    gBack.fillRect(0,0,width,height);


    PixelGrabber grabber = new PixelGrabber(img,0,0,flagW,flagH,flagPix,0,flagW);
    try
    {
      grabber.grabPixels();
    }
    catch(InterruptedException ex)
    {

    }

    grabber = new PixelGrabber(iBack,0,0,width,height,backPix,0,width);
    try
    {
      grabber.grabPixels();
    }
    catch(InterruptedException ex)
    {

    }


    for(int i=0; i<flagH; i++)
    {
      for(int j=0; j<flagW; j++)
      {
        backPix[(i+startY)*width + j+startX] = flagPix[i*flagW + j];
      }
    }

    iBack = createImage(new MemoryImageSource(width,height,backPix,0,width));

  }

  public void start()
  {
    if(thread == null)
    {
      thread = new Thread(this);
      thread.start();
    }
  }

  public void run()
  {
    double rad=0,rad_inc=30;

    while(thread != null)
    {

      int x=0;

      try
      {
        thread.sleep(100);
        rad += rad_inc;

        if(rad >=360)
        {
          rad=0;
        }

        offG.setColor(Color.black);
        offG.fillRect(0,0,width,height);
        for(int i=0; i<height; i++)
        {
          for(int j=0; j<width; j++)
          {
            backPix[i*width + j] = 0;
          }
        }


        for(int i=0; i<flagH; i++)
        {
          for(int j=0; j<flagW; j++)
          {
            x = (int)(5*Math.cos((2*(rad+j*3)*Math.PI)/360));
            backPix[(i+startY + x)*width + (j+startX)] = flagPix[i*flagW + j];
          }
        }

        iBack = createImage(new MemoryImageSource(width,height,backPix,0,width));

        offG.drawImage(iBack,0,0,this);
        repaint();
      }
      catch(InterruptedException e){}
    }
  }

  public void update(Graphics g)
  {
    paint(g);
  }

  public void paint(Graphics g)
  {
    g.drawImage(offI,0,0,this);
  }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -