/*
    スレッドを利用したアニメーション
    裏画面利用
*/
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;

public class xAnime05 extends Applet implements Runnable {

    Thread xthKeeper;
    Image ximgBall, ximgBackGround;
    
    Image xuraGamen;
    Graphics xuraGPen;


    int y = 0;
                         // 
    public void start(){

        xuraGamen = createImage(400, 200);
        xuraGPen  = xuraGamen.getGraphics();

        ximgBall =     getImage(getCodeBase( ), "ball.gif");
        ximgBackGround = getImage(getCodeBase(), "bg.jpg");

        xthKeeper = new Thread(this);     // スレッド生成
        xthKeeper.start();                // スレッド開始(ready状態へ)
    }

    // Runnable対象部分　スレッド実行の時間管理
    public void run(){
        while(true){                // 実行を継続する条件
            repaint();              // 繰返し仕事(画面書き換え)
            try {                   // 「指定したミリ秒の間，眠る」をモニタ
                Thread.sleep(50); // 
            }
            catch(InterruptedException xe){
            }
        }
    }

    // 画面に表示(繰返し仕事)
    public void paint(Graphics xgPen){

        y = y + 3;
        if (y>200){
             y = 0;
        }

        xuraGPen.drawImage(ximgBackGround,0,0,this);

        for(int i=0;i<30;i++){
            xuraGPen.drawImage(ximgBall, i*10, y, this);
        }
        xgPen.drawImage(xuraGamen, 0, 0, this);
    }
    
    public void update(Graphics gPen) {
        paint(gPen);
    }
}

