/* iアプリ, MIDP の Canvas への Image の貼り方 Time-stamp: "2003/10/31 Fri 20:11 hig" Saburo Higuchi 2003 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://sparrow.math.ryukoku.ac.jp/~hig/course/juniors_2003/04/ */ import com.nttdocomo.ui.*; import com.nttdocomo.util.*; // Timer を使う /** MYAP を継承するクラス */ public class TimerAnimSample extends IApplication { /** 起動するときに呼ばれる メソッド. 必須. */ public void start(){ ImageCanvas cc=new ImageCanvas(this); Display.setCurrent(cc); } } class ImageCanvas extends Canvas implements TimerListener // timer のイベントをこのクラスの timerExpired で処理 { TimerAnimSample parent; private Image im[]; String status; int t; /** コンストラクタ. 最初に1回だけ実行される */ ImageCanvas(TimerAnimSample m){ this.parent=m; im=new Image[2]; MediaImage mi0=MediaManager.getImage("resource:///pose0.gif"); MediaImage mi1=MediaManager.getImage("resource:///pose1.gif"); try{ mi0.use(); im[0]=mi0.getImage(); mi1.use(); im[1]=mi1.getImage(); status="イメージ読み込み成功"; } catch (Exception e){ //"gif を読み込むことに失敗" status="イメージ読み込み失敗"; } Timer ti=new 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: */