2012-02-09 97 views
2

我創建了一個示例應用程序,我想要滾動,但我無法實現所需的輸出。如何在j2me畫布中滾動?

我試圖塗料方法中下面的代碼>>>>>

g.translate(x,y); 

和通過爲可變的「y」在KeyDown和keyup事件的值。

任何人都可以幫助我做到這一點?

+0

最有可能是你的代碼中存在一個錯誤。如果您顯示在Canvas#keyPressed和Canvas#paint中使用的代碼,則會更容易分辨。另外,你如何測試你的應用程序 - 你使用模擬器?你從代碼寫日誌消息? – gnat 2012-02-10 07:51:28

回答

1

您是否嘗試過在keyUP中減少Y的值,並調用repaint()方法也會對keyDown做同樣的事情,但現在Y的值將遞減並調用repaint()方法。

使用g.translate(x, changingYvalue);

嘗試。

2

最簡單的方法(儘管內存密集型)是使用MutableImage,並繪製負y座標。

可變圖像只是一個新的圖像(w,h)。
然後你得到它的Graphics上下文,使用myImage.getGraphics(),並用這個Graphics對象繪製。它用作屏幕外緩衝區。

比油漆(圖形克),您撥打:

g.drawImage(0,y,...); 

,你循環每個系統調用減少y以作畫。
(不要屏蔽油漆! - 每個調用都是一個幀,並且您正在逐幀製作動畫
從另一個線程執行動畫循環,您可以減少y,然後調用repaint()和sleep)。

0

我認爲應該在paint方法中繪製滾動條。點擊滾動條的箭頭時,你實現了keyReleased方法。爲了實現scrolling,我更願意致電repaint();,我將用布爾邏輯或某些其他類型的專用variable來管理paint方法。