2011-07-23 69 views
1

我想在用戶觸摸屏幕時在另一個圖像上繪製圖像。但圖像只有在用戶觸摸屏幕時纔會出現,然後在放開屏幕時消失。Java編程幫助和Android開發

這是我的,如果方法:

int RED = 0; 
int GREEN = 1; 
Graphics g = game.getGraphics(); 
int len = touchEvents.size(); 

if (RED == 0) { 
    ready = Assets.readybtntwo; 
} 

for(int i = 0; i < len; i++) { 
    TouchEvent event = touchEvents.get(i); 

    if(event.type == TouchEvent.TOUCH_UP){ 
     updateWaiting(touchEvents); 
     RED +=1; 

     if (RED == 0) 
      ready = Assets.readybtntwo; 

     if(RED == 1) 
      ready = Assets.readybtngreentwo; 
    } 

    g.drawPixmap(ready, 0, 0); 
} 

對不起,我用從書開始的Android遊戲建立了一個框架。但它應該沒關係,我希望圖像永久保留並終止if循環。

+0

你的問題是什麼? –

+0

這聽起來像是你想要圖像在它們觸摸時出現,並且在它們放開後仍然保持在屏幕上? – Jack

回答

1

這裏有一個邏輯錯誤。如果上述代碼全部位於觸摸事件處理程序中,它看起來像變量RED是您的方法的本地。這意味着當用戶每次觸摸屏幕時,它會重置爲0,然後再次變爲1。這可能不是你想要的。

它只是呈現的原因是,g.drawPixmap將提交一個元素到繪製隊列或立即渲染。只有在觸摸事件時才繪製該按鈕的繪製方法!

相反,你可以有一個布爾drawGreenReadyButton值作爲一個類的成員,即

private boolean drawGreenReadyButton = false; 

然後你就可以if語句改變內到以下幾點:

if(event.type == TouchEvent.TOUCH_UP){ 
    updateWaiting(touchEvents); 
    drawGreenReadyButton = true; 
} 

而主要呈現內循環而不是在觸摸事件處理程序中輸入:

if(drawGreenReadyButton) { 
    g.drawPixmap(Assets.readybtngreentwo, 0, 0); 
} else { 
    g.drawPixmap(Assets.readybtntwo, 0, 0); 
} 

另外,請考慮使用TouchEvent.TOUCH_DOWN而不是TouchEvent.TOUCH_UP,以便按鈕一接觸屏幕就顯示爲綠色,而不是當他們擡起手指時。

+0

我試過了,它沒有畫直到我點擊,當我點擊它繪製一個並立即採取任何其他建議? –

+0

這聽起來像你沒有看到「在你的主渲染循環中,而不是在觸摸事件處理程序放置」部分。這裏的推理是,在你繪製所有東西的主渲染循環中,你總是需要提交一個按鈕來繪製,不管是綠色還是其他的。如果您告訴它在觸控事件處理程序中繪製按鈕,那麼它只會在您觸摸時繪製按鈕,並在畫布刷新下一幀時將其刪除。 –