26.1.9.24 脈動円

とりあえず,“円が脈動する”アニメーションを作ってみましょう.キーポイントは,スレッド機能を組み込むための指定と,スレッドの作成・実行・停止の方法です.

import java.awt.*;
import java.applet.Applet;
public class Pulsing extends Applet
                    implements Runnable{
  Thread myThread = null;      // これが専用の実行環境です.
  int cx, cy, r=10, dr=2;
  public void start() {
     if(myThread==null) {           // 動いていなければ
       myThread = new Thread(this); // 自分(this)用の実行環境を作り
       myThread.start();            // 「動かし」ます.  
     }
  }
  public void stop() {
     if(myThread!=null) {           // 動いていれば
       myThread.stop();             // 「止めて」
       myThread=null;               // 実行環境を放棄します.
      }
  }
  public void run() {
     while(true) {            // 無限に繰り返します.
         if(r > cy || r < 10) dr = -dr;
         r = r+dr;             // 半径を変えて
         repaint();            // 描き直して
         try{ myThread.sleep(100); } // 100ミリ秒休止
         catch(InterruptedException e){ }
     }
  }
  public void init(){
     setBackground(Color.white);
     setForeground(Color.blue);
     cx = getSize().width/2;
     cy = getSize().height/2;
  }
  public void paint(Graphics g){
     g.drawOval(cx-r, cy-r, 2*r, 2*r);
  }
}

filePulsing.java (iso-2022-jp)