• 締切済み

iアプリの表示

いま、簡単なアプリをつくろうと思い、以下のところまでできましたが、 Flashのモーショントウィーンみたいしたいのですが、前の表示の画像が消えないので、つながった画像表示になります。どうしたら前の画像表示が消えて、新しい表示のみにすることができるか?教えていただけたらと思います。docomoのiアプリです。  public class JavaGame extends IApplication { public void start(){ MyCanvas canvas = new MyCanvas(); Display.setCurrent(canvas); canvas.run(); terminate(); } } import com.nttdocomo.ui.*; public final class MyCanvas extends Canvas{ public final static int FPS = 30; // フレームレート public final static int INTERVAL = 1000 / FPS; // フレームの間隔 // --- 変数の定義 long lastTime = 0; // 前回のフレーム終了時間 // --- 変数の定義 Graphics grp = getGraphics(); // グラフィックの取得 MediaImage mi; Image img; int chx; int chy; void run(){ init(); while(true){ proc(); draw(); sleep(); } } void init(){ mi=MediaManager.getImage("resource:///0.gif"); try{ mi.use(); }catch(Exception e){ } img =mi.getImage(); } void proc(){ chy+=10; } void draw() { grp.lock(); int color =Graphics.getColorOfRGB(0,0,255); grp.setColor(color); grp.drawImage(img,chx,chy); grp.unlock(true); } // --- 休止 void sleep() { long wait = INTERVAL - (System.currentTimeMillis() - lastTime); if(wait > 0) { try { Thread.sleep(wait); } catch(Exception e) { } } lastTime = System.currentTimeMillis(); } public void paint(Graphics grp){ } }//class

みんなの回答

noname#235174
noname#235174
回答No.2

#1です >keyPadState()でキャラクターを移動をさせたときも同じ >やり方でよいのでしょうか? はい。画面上で1ピクセルでも変更があった場合は、 必ず一旦背景色(もしくは背景画像)で塗りつぶす(描画しなおす) ことで位置が移動しているように見せます。 基本的に描画系メソッドはは、「描く」ことしかできないので こういう移動処理の時は、以前の表示を「消す」のではなくて、 「上書きする」と思ってください。

smile_ad
質問者

お礼

重ね重ね丁寧なお答え、ありがとうございます。 非常によくわかりました、上書きをするという のがわかりませんでした、Flashでゲームをつくったり していたので、ムービークリップを動かす感覚で 画像をうごかす方法を考えていたのが方向が違うのが よくわかりました、非常に基礎的質問なのに、丁寧に教えて くださり、ありがとうございました。

noname#235174
noname#235174
回答No.1

draw()メソッドの grp.lock(); int color =Graphics.getColorOfRGB(0,0,255); grp.setColor(color); /**** この辺 ****/ grp.drawImage(img,chx,chy); grp.unlock(true); にgrp.fillRect() で画面全体を一回塗りつぶしてしまえばいいのでは? 通常こうやって一回スクリーンをクリアしてから再描画すると思うのですが・・・。 ※場合によっては部分再描画だけで済まし、パフォーマンスを上げる時もあります。

smile_ad
質問者

お礼

うまくいきました、一度塗りつぶせばよかったのですね、 ありがとうございます。 keyPadState()でキャラクターを移動をさせたときも同じ やり方でよいのでしょうか?

関連するQ&A

専門家に質問してみよう