TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
import java.applet.*;
import java.net.URL;
import java.net.MalformedURLException;
import java.awt.*;
public class Lake extends Applet implements Runnable {
Thread m_Lake = null;
private Graphics m_Graphics, m_WaveGraphics;
private Image m_Image, m_Overlay, m_WaveImage;
private int m_nCurrImage; private int m_nImgWidth = 0;
private int m_nImgHeight = 0;
private int m_nOvlWidth = 0;
private int m_nOvlHeight = 0;
private boolean m_fAllLoaded = false, m_tAnimate = true;
private final int NUM_FRAMES = 12;
private String m_ImageName = "";
private String m_OverlayName = "";
private URL m_HRef; private String m_Frame = "_self";
private final String PARAM_image = "image";
- private final String PARAM_overlay = "overlay";
- private final String PARAM_href = "href";
- private final String PARAM_target = "target";
- public Lake()
- {
- // TODO: Add constructor code here
- }
- public String getAppletInfo()
- {
- return "Name: Lake v3.0
- " +
- "Author: David Griffiths
- " +
- "Created with Microsoft Visual J++ Version 1.0";
- }
- public String[][] getParameterInfo()
- {
- String[][] info =
- {
- { PARAM_image, "String", "JPG or GIF file to reflect" },
- { PARAM_overlay, "String", "JPG or GIF file to use as overlay" },
- { PARAM_href, "URL", "URL to link to" },
- { PARAM_target, "String", "Target frame" },
- };
- return info;
- }
- public void init()
- {
- String param;
- param = getParameter("image");
- if (param != null)
- m_ImageName = param;
- param = getParameter(PARAM_overlay);
- if (param != null)
- m_OverlayName = param;
- param = getParameter(PARAM_href);
- if (param != null)
- try
- {
- m_HRef = new URL(getDocumentBase(), param);
- }
- catch (MalformedURLException e)
- {
- getAppletContext().showStatus("Bad URL: " + param);
- return;
- }
- param = getParameter(PARAM_target);
- if (param != null)
- m_Frame = param;
- }
- public void destroy()
- {
- // TODO: Place applet cleanup code here
- }
- private void displayImage(Graphics g)
- {
- if (!m_fAllLoaded)
- return;
- if (m_WaveImage != null) {
- g.drawImage (m_WaveImage, (-m_nCurrImage * m_nImgWidth), m_nImgHeight, this);
- g.drawImage (m_WaveImage, ((NUM_FRAMES-m_nCurrImage) * m_nImgWidth),
- m_nImgHeight, this);
- }
- g.drawImage (m_Image, 0, -1, this);
- }
- public void paint(Graphics g)
- {
- if (m_fAllLoaded)
- displayImage(g);
- else
- g.drawString("Loading images...", 10, 20);
- // TODO: Place additional applet Paint code here
- }
- public void start()
- {
- if (m_Lake == null)
- {
- m_Lake = new Thread(this);
- m_Lake.start();
- }
- }
-
- public void stop()
- {
- if (m_Lake != null)
- {
- m_Lake.stop();
- m_Lake = null;
- }
- }
- public void run()
- {
- m_nCurrImage = 0;
-
- if (!m_fAllLoaded)
- {
- repaint();
- m_Graphics = getGraphics();
- MediaTracker tracker = new MediaTracker(this);
- String strImage;
- m_Image = getImage(getDocumentBase(), m_ImageName);
- if (!"".equals(m_OverlayName))
- m_Overlay = getImage(getDocumentBase(), m_OverlayName);
- tracker.addImage(m_Image, 0);
- if (!"".equals(m_OverlayName))
- tracker.addImage(m_Overlay, 1);
- try
- {
- tracker.waitForAll();
- m_fAllLoaded = !tracker.isErrorAny();
- }
- catch (InterruptedException e) {}
-
- if (!m_fAllLoaded)
- {
- stop();
- m_Graphics.drawString("Error loading images!", 10, 40);
- return;
- }
- m_nImgWidth = m_Image.getWidth(this);
- m_nImgHeight = m_Image.getHeight(this);
- if (!"".equals(m_OverlayName)) {
- m_nOvlWidth = m_Overlay.getWidth(this);
- m_nOvlHeight = m_Overlay.getHeight(this);
- }
- createAnimation();
- }
- repaint();
- while (true)
- {
- try{
- if (m_tAnimate)
- {
- displayImage(m_Graphics);
- if (++m_nCurrImage == NUM_FRAMES)
- m_nCurrImage = 0;
- Thread.sleep(50);
- }
- else
- Thread.sleep(500);
- } catch (InterruptedException e){
- stop();
- }
- }
- }
- public boolean mouseUp(Event event, int i, int j)
- {
- boolean flag = super.mouseUp(event, i, j);
- if (m_HRef == null)
- m_tAnimate = !m_tAnimate; // Toggle m_tAnimate to start/stop animation.
- else
- {
- showStatus("" + m_HRef);
- getAppletContext().showDocument(m_HRef, m_Frame);
- }
- return true;
- }
- public void createAnimation ()
- {
- Image backImg = createImage (m_nImgWidth, m_nImgHeight + 1);
- Graphics backG = backImg.getGraphics();
- backG.drawImage (m_Image, 0, 1, this);
- for (int i = 0; i < (m_nImgHeight >> 1); i++)
- {
- backG.copyArea (0, i, m_nImgWidth, 1, 0, m_nImgHeight - i);
- backG.copyArea (0, m_nImgHeight - 1 - i, m_nImgWidth, 1,
- 0, -m_nImgHeight + 1 + (i << 1));
- backG.copyArea (0, m_nImgHeight, m_nImgWidth, 1, 0, -1 - i);
- }
- m_WaveImage = createImage ((NUM_FRAMES + 1) * m_nImgWidth, m_nImgHeight);
- m_WaveGraphics = m_WaveImage.getGraphics();
- m_WaveGraphics.drawImage (backImg, NUM_FRAMES * m_nImgWidth, 0, this);
- for (int phase = 0; phase < NUM_FRAMES; phase++)
- makeWaves (m_WaveGraphics, phase);
- backG.drawImage (m_Image, 0, 1, this);
- if (!"".equals(m_OverlayName))
- backG.drawImage (m_Overlay,
- (m_nImgWidth - m_nOvlWidth) >> 1,
- m_nImgHeight - (m_nOvlHeight >> 1), this);
- m_Image = backImg;
- }
- public void makeWaves (Graphics g, int phase)
- {
- double p1;
- int dispx, dispy;
- p1 = 2 * Math.PI * (double)phase / (double)NUM_FRAMES;
- dispx = (NUM_FRAMES - phase) * m_nImgWidth;
- for (int i = 0; i < m_nImgHeight; i++)
- {
- dispy = (int)((m_nImgHeight/14) * ((double) i + 28.0)
- * Math.sin ((double)((m_nImgHeight/14)*(m_nImgHeight - i))
- /(double)(i + 1)
- + p1)
- / (double) m_nImgHeight);
- if (i < -dispy)
- g.copyArea (NUM_FRAMES * m_nImgWidth, i, m_nImgWidth, 1,
- -dispx, 0);
- else
- g.copyArea (NUM_FRAMES * m_nImgWidth, i + dispy,
- m_nImgWidth, 1, -dispx, -dispy);
- }
- if (!"".equals(m_OverlayName))
- g.drawImage (m_Overlay,
- (phase * m_nImgWidth) + ((m_nImgWidth - m_nOvlWidth) >> 1),
- -m_nOvlHeight >> 1, this);
- }
- }
复制代码
源码下载:http://file.javaxxz.com/2014/10/31/235715359.zip |
|