/* iアプリ, MIDP の Canvas への Image の貼り方 Time-stamp: "2005/11/10 Thu 21:38 hig" Saburo Higuchi 2003,2005 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://www.a.math.ryukoku.ac.jp/~hig/course/juniors_2005/06/ */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*; // Timer を使う /** MYAP を継承するクラス */ public class TimerAnimSample extends MIDlet { /** 起動するときに呼ばれる メソッド. 必須. */ public void startApp(){ TimerAnimCanvas cc = new TimerAnimCanvas(this); Display.getDisplay(this).setCurrent(cc); } public void pauseApp(){} public void destroyApp(boolean unconditional){} } class TimerAnimCanvas extends Canvas { TimerAnimSample parent; private Image im[]; String status; int t; /** コンストラクタ. 最初に1回だけ実行される */ TimerAnimCanvas(TimerAnimSample m){ this.parent=m; im=new Image[2]; try{ im[0]=Image.createImage("/pose0.png"); im[1]=Image.createImage("/pose1.png"); status="イメージ読み込み成功"; } catch (Exception e){ //"gif を読み込むことに失敗" status="イメージ読み込み失敗"; } Timer ti=new Timer(); // Timer を作る. Periodic pe=new Periodic(this); ti.schedule(pe, 2000, 1000); // 2000ミリ秒後から1000ミリ秒ごとに // pe の run メソッドを呼び出す // ti.cancel() でクリア } public void paint(Graphics g){ // 特定の座標に, im[0] または im[0] を貼る. g.setColor(255,255,255); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す g.drawImage(im[t],getWidth()/2,getHeight()/4 ,Graphics.LEFT|Graphics.BOTTOM); // 絵を貼る g.setColor(0,0,0); g.drawString("" + t + " " + status,0,getHeight()/2 ,Graphics.LEFT|Graphics.BOTTOM); } public void increment(){ t=(t+1)%2; repaint(); } } class Periodic extends TimerTask { TimerAnimCanvas ic; Periodic(TimerAnimCanvas ic){ this.ic=ic; } /** Timer が expire したとき呼ばれるメソッド */ public void run(){ ic.increment(); } } /* Local Variables: mode: java End: */