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

📄 ripple.java

📁 Java 范例实战 光盘使用说明 ========================== 本光盘的文件结构如下所示: =====================================
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.*;
import java.awt.image.ImageObserver;
import java.io.PrintStream;

public class ripple extends Applet
    implements Runnable
{

    Image origImg = null;
    Image backImg = null;
    Image finImg = null;
    int w1 = 0;
    int h1 = 0;
    Graphics backG = null;
    Graphics finG = null;
    int phase = 0;
    Thread nick = null;
    int frameNo = 0;
    int frames = 0;
    int period = 0;
    boolean stopIt = false;
    boolean borderGap = false;
    boolean imLoaded = false;

    public void init()
    {
 
        setBackground(Color.white);
        origImg=getImage(getDocumentBase(),getParameter("image"));
        w1 = origImg.getWidth(this);
        h1 = origImg.getHeight(this);
        if(h1 > 0 && w1 > 0)
            stopIt = false;
        period = Integer.parseInt(getParameter("period"));
        frames = Integer.parseInt(getParameter("frames"));
 
    }

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

    public void stop()
    {
 
        if(nick != null)
        {
 
            nick.stop();
            nick = null;
 
        }
 
    }


    public void rotateImage(Graphics g)
    {
 
        shearX(g);
        shearY(g);
 
    }

    public void shearX(Graphics g)
    {
 
        for(int i = 0; i < h1; i++)
        {
 
            double d = (double)(period >> 1) * Math.sin((double)i / (double)period + (6.2831853071795862D * (double)phase) / (double)frames);
            g.copyArea(0, i, w1, 1, (int)d, 0);
             
        }

    }

    public void shearY(Graphics g)
    {
 
        for(int i = 0; i < w1; i++)
        {
 
            double d = (double)(period >> 1) * Math.sin((double)i / (double)period + (6.2831853071795862D * (double)phase) / (double)frames);
            g.copyArea(i, 0, 1, h1, 0, (int)d);
 
        }

    }

    public void run()
    {
 
        while(nick != null) 
        {
 
            try
            {
 
                Thread.sleep(50L);
 
            }
            catch(InterruptedException _ex) { }
            frameNo = (frameNo + 1) % frames;
            repaint();
 
        }

    }

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

    public void paint(Graphics g)
    {
 
        if(!stopIt)
        {
 
            stopIt = true;
            createIt();
 
        }
        if(finImg != null)
        {
 
            g.drawImage(finImg, 0, -frameNo * h1, this);
            g.drawImage(finImg, 0, (frames - frameNo) * h1, this);
            return;
 
        }
        else
        {
 
            g.drawImage(origImg, 0, 0, this);
            return;
 
        }
 
    }

    public void createIt()
    {
 
        backImg = createImage(w1, h1);
        backG = backImg.getGraphics();
        finImg = createImage(w1, frames * h1);
        finG = finImg.getGraphics();
        backG.setColor(Color.white);
        for(phase = 0; phase < frames; phase++)
        {
 
            backG.drawImage(origImg, 0, 0, this);
            rotateImage(backG);
            finG.drawImage(backImg, 0, phase * h1, this);
 
        }

    }

    public ripple()
    {
 
        frames = 12;
        period = 50;
        stopIt = true;
        imLoaded = false;
 
    }

}

⌨️ 快捷键说明

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