2012-04-14 181 views
0

我有這段代碼,我想在java 2d遊戲中啓動一個跳轉,事情是我的對象不會去任何地方,它只是停留在那裏...我想我的對象跳,我按下鍵和程序,以顯示我的圖片動起來,並down..i正嘗試通過簡單的重繪()方法 CODE ::::java 2d遊戲中的「JUMP」

public void actionPerformed(ActionEvent e) { 
    if(hero.jump()==1){ 
    int jumpheight=40,j=0; 
    while(j<jumpheight){ 
     hero.y--;    \\changing the y position (up).. 
      try { 
      Thread.sleep(100); 
     } catch (InterruptedException e1) {} 
     repaint(); 
     j++; 
    } 
    j=0; 
    hero.jump1=0; 
    while(j<jumpheight){ 
     hero.y++;    \\changing the y position (down).. 
      try { 
      Thread.sleep(100); 
     } catch (InterruptedException e1) {} 
     repaint(); 
     j++; 
    } 
    } 
    else { 
    hero.move(); 
    repaint(); 
    } 
+0

我不會做很多Java GUI的東西,但如果我沒有記錯的話,我最近遇到了一個問題,通過調用'JPanel'上的'updateUI'方法來解決,我想重繪。如果你發佈完整的代碼,我會看看它。 – 2012-04-14 06:13:33

+0

不要忘記把你的家庭作業標記爲:「功課」....? – barsju 2012-04-14 06:14:20

+0

你確定你的actionPerformed函數被調用嗎? – 2012-04-14 06:14:33

回答

0

做到這一點,你需要移動位置換成另一個線程。關鍵處理和重繪現在在您現在的代碼的同一個線程中處理。當你調用repaint()時,計劃重繪,但直到事件線程再次「免費」才執行,但由於你有一個循環(有睡眠),它永遠不會自由,而是在你的循環之後重繪完成(並且你的英雄回到原來的位置)。