import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;

/**
 画像をループして表示するアプレット SlideImage クラスの定義
 */
public class SlideImage extends Applet implements Runnable {

    /**
     画像の移動を行うスレッド
     */
       public Thread slideThread=null;

    /**
     イメージ
     */
       protected Image image=null;

    /**
     イメージのアプレット内の位置
     */
       protected int x=0;

    /**
     初期設定の関数。
     指定された URL のイメージを生成し、アプレットのサイズを設定。
     */
       public void init() {

             String imageSource = getParameter("image");
             if ( imageSource== null )
                  imageSource = "../images/fujiki.gif";

             image = getImage( getDocumentBase(),  imageSource );
       }

    /**
     アプレットの初期表示を行う関数。
     */
       public void paint( Graphics g ) {

             g.drawImage( image, 0, 0 , this);
             g.drawImage( image, image.getWidth(this), 0 , this );
       }

    /**
     アプレットの表示の更新行う関数。
     */
       public void update( Graphics g ) {

             g.drawImage( image, x - image.getWidth(this), 0 , this );
             g.drawImage( image, x, 0 , this);
       }

    /**
     アプレットが画面に現れた時に呼び出される。
     */
       public void start() {

             if( slideThread == null ) {
                   slideThread = new Thread(this);  //スレッド生成
                   slideThread.start();             //スレッド起動
             }
       }

    /**
     アプレットが画面から消えた時に呼び出される。
     */
       public void stop() {

             if( slideThread != null ) {
                   slideThread.stop();           //スレッド停止
                   slideThread = null;           //スレッド消去
             }
       }

    /**
     アプレットが続行する作業
     */
       public void run() {

             while( slideThread.isAlive() ) {
                  repaint();
                  x = (x+4) % image.getWidth(this);  //位置をずらす
                  try {
                       Thread.sleep(200);            //一時停止200ミリ秒
                  }
                  catch (InterruptedException e){}
             }
       }
}

