/* Timerによるアニメーション Time-stamp: "2007-11-15 Thu 14:17 JST hig" Saburo Higuchi 2003,2005-2007 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://www.a.math.ryukoku.ac.jp/~hig/course/juniors_2007/06/ */ import com.nttdocomo.ui.*; import com.nttdocomo.util.*; // Timer を使う /** MYAP を継承するクラス */ public class TimerAnimSample extends IApplication { /** 起動するときに呼ばれる メソッド. 必須. */ public void start(){ TimerAnimCanvas cc=new TimerAnimCanvas(this); Display.setCurrent(cc); } } class TimerAnimCanvas extends Canvas implements TimerListener // timer のイベントをこのクラスの timerExpired で処理 { TimerAnimSample parent; private Image im[]; String status; int t; String imagefiles[]={"pose0.gif","pose1.gif"}; /** コンストラクタ. 最初に1回だけ実行される */ TimerAnimCanvas(TimerAnimSample m){ this.parent=m; im=new Image[imagefiles.length]; MediaImage mi[]; mi=new MediaImage[imagefiles.length]; for(int i=0; i< imagefiles.length; i++){ mi[i]=MediaManager.getImage("resource:///" + imagefiles[i]); // アプリのダウンロード後に Web サーバからイメージをダウンロード // ADF 設定で UseNetwork: http // mi[i]=MediaManager.getImage("http://somehost/somepath/" + imagefiles[i]); } try{ for(int i=0; i< imagefiles.length; i++){ mi[i].use(); im[i]=mi[i].getImage(); } status="イメージ読み込み成功"; } catch (Exception e){ //"gif を読み込むことに失敗" status="イメージ読み込み失敗"; } Timer ti=new Timer(); // Timer を作る. ti.setTime(1000); // 1000ミリ秒で鳴るタイマー ti.setRepeat(true); // 繰り返し鳴るタイマー ti.setListener(this); // このクラス cc の timerExpired を使用. ti.start(); // カウントダウン開始. 一時停止は, ti.stop(); } public void paint(Graphics g){ // 特定の座標に, im[0] または im[0] を貼る. g.setColor(Graphics.getColorOfName(Graphics.WHITE)); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す g.drawImage(im[t],getWidth()/2,getHeight()/4 +0); // 絵を貼る g.setColor(Graphics.getColorOfName(Graphics.BLACK)); g.drawString("" + t + " " + status,0,getHeight()/2 +0); } public void increment(){ t=(t+1)%2; repaint(); } /** Timer が 0 になったとき呼ばれるメソッド implements TimerListner を宣言したらこれが必要 */ public void timerExpired(Timer source){ increment(); } } /* Local Variables: mode: java End: */