我正在嘗試創建一個可以使用我的光標鍵繪製任何東西的midlet。我使用了drawLine方法。但是我想創建一條線,然後改變方向,保持上一條線,但是線保持旋轉。J2ME:如何保存通過使用drawline()創建的線條,並從線條的結束點開始再保留前一個?
基本上我應該能夠在任何方向繪製任何東西。
這是我的代碼:
public class Pacer extends MIDlet{
public void startApp() {
Displayable d = new PacerCanvas();
d.addCommand(new Command("Exit", Command.EXIT, 0));
d.setCommandListener(new CommandListener() {
public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
});
Display.getDisplay(this).setCurrent(d);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
}
/**
*
* @author Rumman
*/
import javax.microedition.lcdui.*;
public class PacerCanvas extends Canvas {
private String name;
private int w,h,x1,y1,x2,y2;
public PacerCanvas(){
w = getWidth();
h = getHeight();
x1 = w/2 ;
y1 = h/2 ;
x2 = x1 ;
y2 = y1 ;
}
protected void keyPressed(int key){
name = getKeyName(key);
if(name.equals("Right") || name.equals("6")){
x2++;
}
else if(name.equals("Left") || name.equals("4")){
x2--;
}
else if(name.equals("Up") || name.equals("2")){
y2--;
}
else if(name.equals("Down") || name.equals("8")){
y2++;
}
else if(name.equals("1")){
x2--;
y2++;
}
else if(name.equals("3")){
x2++;
y2++;
}
else if(name.equals("7")){
}
else if(name.equals("9")){
}
repaint();
}
public void paint(Graphics g) {
g.setColor(0xffffff);
g.fillRect(0, 0, w, h);
g.setColor(0x000000);
g.drawLine(x1, y1, x2, y2);
}
}
謝謝您的回覆,我在實現你所說的話有問題。你說:「停止擦除屏幕,併爲每個用戶輸入畫一條新線。」現在我該如何停止擦除屏幕?我如何保存它?我正在使用keyPressed(),現在如您所建議的keyreapeated(),而不重繪我如何繪製一個保留前一個的newLine? 2.someone建議我畫一幅圖片並保存,然後覆蓋該圖片....我沒有成功地做到這一點。 – rumman0786 2012-03-24 08:21:39
3. x1 = x2; y1 = y2; 我明白這一點,也做了你告訴我要做的事情,但問題是因爲我無法將我以前的繪圖保存在屏幕中,它總是被刪除並變成指針/鼠標。這裏是我修改的代碼... 你能告訴我如何實現我想要做的事情嗎? – rumman0786 2012-03-24 08:35:51
答案已更新爲1和2。對於3,您沒有在正確的位置添加新代碼。再次閱讀答案。 – 2012-03-26 02:49:32