2012-02-09 3 views
2

スクロールしたいサンプルアプリケーションを作成しましたが、目的の出力を得ることができません。j2meキャンバスでスクロールする方法は?

Iは、ペイント法内部次のコードは

g.translate(x,y); 

とのKeyDownとkeyUpイベントイベントで変数「Y」の値を渡すことを>>>>>試みました。

これを行うには誰も助けてくれますか?

+0

おそらくコードにバグがあります。 Canvas#keyPressedとCanvas#paintで使用しているコードを表示すると、分かりやすくなります。また、どのようにあなたのアプリをテストするのですか?エミュレータを使用していますか?あなたはコードからログメッセージを書いていますか? – gnat

答えて

1

keyUPのYの値を減らして試しましたが、repaint()メソッドもkeyDownと同じことをしましたが、今度はYの値が減少し、repaint()メソッドを呼び出します。

はこれを試してg.translate(x, changingYvalue);

を使用してください。

2

MutableImageを使用して、負のy座標で描画するのが最も簡単な方法です(メモリが大量ですが)。

変更可能な画像は、単に新しい画像(w、h)です。
myImage.getGraphics()を使用してGraphicsコンテキストを取得し、このGraphicsオブジェクトで描画します。オフスクリーンバッファーとして機能します。ペイント(グラフィックスG)よりも

、コール:

g.drawImage(0,y,...); 
もしループペイントするために、各システムコールにYを減少


(paintをブロックしないでください - 各呼び出しは1つのフレームで、フレームごとのアニメーションを実行しています)
yを減らした別のスレッドからアニメーションループを実行し、repaint()を呼び出してスリープします。

0

スクロールバーは、paintメソッド内に描画する必要があると思います。スクロールバーの矢印をクリックすると、keyReleasedメソッドが実装されます。 scrollingを実装するには、repaint();を呼び出すことをお勧めします。paintメソッドをbooleanまたはその他のプライベートタイプのvariableで管理します。

関連する問題