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

📄 animatebutton.java

📁 鼠标经过时显示动画的按钮
💻 JAVA
字号:


import java.applet.*;
import java.awt.*;
import java.net.*;

class Animate extends Thread
{
  animateButton b;

  public Animate(animateButton who)
  {
    b = who;
  }

  public void run()
  {
    while(b.running)
    {
	b.advanceFrame();
  	b.repaint();
	try
	{
	  sleep(b.sleeptime);
	}
	catch(Exception e){}
    }
  }
}

public class animateButton extends Applet
{
  int nframe;
  Image image[];
  AudioClip audio;
  URL url;
  String target;
  int sleeptime;
  MediaTracker tracker;
  Animate animate;
  int frame;
  boolean running;

  private Image offScreenImage;
  private Dimension offScreenSize;
  private Graphics offScreenGraphics;

  public void advanceFrame()
  {
	frame = (frame + 1) % nframe;
  }

  public void init()
  {
	String parameter;

	// init number of frames
	parameter = getParameter("nframe");
	if (parameter == null)
	  System.out.println("Error: invalid parameter: nframe");
	else
	  nframe = Integer.parseInt(parameter);

	// init images
	image = new Image[nframe];
	tracker = new MediaTracker(this);
	for (int i = 0; i < nframe; i++)
	{
	  parameter = getParameter("image"+i);
	  if (parameter == null)
	    System.out.println("Error: invalid parameter: image"+i);
	  else
	  {
	    image[i] = getImage(getDocumentBase(), parameter);
	    tracker.addImage(image[i], i);
	  }
	}
	try
	{
	  tracker.waitForAll();
	}
	catch (InterruptedException e)
	{
	  System.out.println("Error waiting for image to load.");
	}

	// init audio
	parameter = getParameter("audio");
	if (parameter != null)
	  audio = getAudioClip(getDocumentBase(), parameter);

	// init url
	parameter = getParameter("url");
	if (parameter != null)
	{
	  try
	  {
	    url= new URL(parameter);
	  }
	  catch(MalformedURLException mal)
	  {
	    System.out.println("Error locating URL address.");
	  }
	}

	// init target window
	target = getParameter("target");

	// init sleep time
	parameter = getParameter("sleeptime");
	if (parameter == null)
	  sleeptime = 1000;
	else
	  sleeptime = Integer.parseInt(parameter);	  
  }

  public void paint (Graphics g)
  {
    g.drawImage(image[frame], 0, 0, null);    
  }

  public final synchronized void update (Graphics g)
  {
    Dimension d = size();
    if((offScreenImage == null) || (d.width != offScreenSize.width) ||  (d.height != offScreenSize.height))
    {
      offScreenImage = createImage(d.width, d.height);
      offScreenSize = d;
      offScreenGraphics = offScreenImage.getGraphics();
    }
    offScreenGraphics.setColor(getBackground());
    offScreenGraphics.fillRect(0, 0, d.width, d.height);
    paint(offScreenGraphics);
    g.drawImage(offScreenImage, 0, 0, null);
  }

  public void stop()
  {
	running = false;
	destroy();
  }

  public boolean mouseDown(Event evt, int x, int y)
  {
	if (audio != null)
          audio.play();
	return true;
  }
  public boolean mouseUp(Event evt, int x, int y)
  {
	if (url != null)
	{
	  if (target != null)
	    getAppletContext().showDocument(url, target);
	  else
	  getAppletContext().showDocument(url);
	}
	return true;
  }

  public boolean mouseEnter(Event evt, int x, int y)
  {
	running = true;
        animate = new Animate(this);
        animate.start();
	return true;
  }

  public boolean mouseExit(Event evt, int x, int y)
  {
	running = false;
	return true;
  }
}

⌨️ 快捷键说明

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