/* 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 javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*; /** MYAP を継承するクラス */ public class TimerAnimSample extends MIDlet { /** 起動するときに呼ばれる メソッド. 必須. */ public void startApp(){ ImageCanvas cc = new ImageCanvas(this); Display.getDisplay(this).setCurrent(cc); } public void pauseApp(){} public void destroyApp(boolean unconditional){} } class ImageCanvas extends Canvas { TimerAnimSample parent; private Image im[]; String status; int t; /** コンストラクタ. 最初に1回だけ実行される */ ImageCanvas(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(); 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<<16) + (255<<8) + (255)) ); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す g.drawImage(im[t],getWidth()/2,getHeight()/4 ,Graphics.LEFT|Graphics.BOTTOM ); // 絵を貼る g.setColor(0 ); g.drawString("" + t + " " + status,0,getHeight()/2 ,Graphics.LEFT|Graphics.BOTTOM ); } public void increment(){ t=(t+1)%2; repaint(); } } class Periodic extends TimerTask { ImageCanvas ic; Periodic(ImageCanvas ic){ this.ic=ic; } /** Timer が expire したとき呼ばれるメソッド */ public void run(){ ic.increment(); } } /* Local Variables: mode: java End: */