アニメーション(トンボが飛んでいく)


Java Appletのアニメーション


ソースコード

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

public class ja30b extends Applet implements Runnable
{
  int xpos = 0;					//スレッドで移動さす画像のx座標
  Thread myThread = null;
  Image picA,picB;

  public void init(){
	picA = getImage(getCodeBase(),"Ban_138.gif");	 //画像の読み込み
	picB = getImage(getCodeBase(),"Ico_213.gif");
  }

  public void start(){
    if(myThread == null){				//スレッドの開始
	myThread = new Thread(this);
	myThread.start();
    }
  }

  public void stop(){			//スレッドを停止
    if(myThread != null){
	myThread.stop();
	myThread = null;
    }
  }

  public void paint(Graphics g){
	g.drawImage(picA,0,0,this);		 //背景画像を描画
	g.drawImage(picB,xpos,60,this);		 //移動する画像を描画
  }

  public void run(){
    while(myThread != null){
	Rectangle pic1 = new Rectangle(xpos,70,28,16);	//移動前の領域
	xpos += 10;					//移動画像を10ピクセルだけ右に移動
	if(xpos > size().width)				//Appletの右端に達すると,左端に戻す
	  xpos = 0;
	Rectangle pic2 = new Rectangle(xpos,70,28,16);	//移動後の領域
	Rectangle pic3 = pic2.union(pic1);			//移動前と移動後の両領域を結合

	Graphics g = getGraphics();
	g.clipRect(pic3.x,pic3.y,pic3.width,pic3.height);	//結合した両領域をクリップする
	paint(g);						//クリップ領域を描画する。

	try{
	  Thread.sleep(300);					//0.3秒間隔で移動する
	}catch(InterruptedException e){};
    }
  }
}

末尾