2013-05-29 56 views
0

我正在編寫正在處理的遊戲,但我遇到以下問題: 當我按左箭頭鍵時,字符向左移動。但是如果我按住鍵,然後按下左箭頭鍵時按下跳躍(向上箭頭鍵),當角色到達地面時停止移動。 發生這種情況是因爲某種程度上,處理在您按下另一個按鈕後會停止獲取按下的按鍵。 無論如何要解決這個問題?正在處理 - 正在處理鍵

+0

語言?......平臺?......等等...... –

+0

他說,處理就是語言。 –

回答

0

有keyTyped(),但我從來沒有得到它的工作,如參考文獻中所描述...您可以嘗試一下... keyPressed()在按下按鍵時被調用一次,但不會在它的時間仍然按下。這樣做的一個常用方法是使用布爾值從兩個調用的keyPressed()和調用keyReleased()來跟蹤你的需要,如規定:

[EDIT2] 代碼適合:

boolean[]keys = new boolean[5]; 
final int A = 0; 
final int W = 1; 
final int S = 2; 
final int D = 3; 
final int R = 4; 
char keyP; 
PVector p; 

void setup(){ 
    size(400,400); 
    p = new PVector (width/2, height/2); 
} 

void draw(){ 

    background(255); 
    ellipse (p.x, p.y, 10, 10); 
    if(keys[A]){ 
    p.x--; 
    } 
    if(keys[W]){ 
    p.y--; 
    } 
    if(keys[S]){ 
    p.x++; 
    } 
    if(keys[D]){ 
    p.y++; 
    } 
    if(keys[R]){ 
    println("what should I do?"); 
    } 


} 



void keyPressed() { 
    keyP = key; 

    switch(keyP) { 
     case 'A': 
     case 'a': 
      keys[A] = true; 
      //println("a pressionado"); 
      break; 
     case 'W': 
     case 'w': 
      keys[W] = true; 
      //println("w pressionado"); 
      break; 
     case 'S': 
     case 's': 
      keys[S] = true; 
      //println("s pressionado"); 
      break; 
     case 'D': 
     case 'd': 
      keys[D] = true; 
      //println("d pressionado"); 
      break; 
     case 'R': 
     case 'r': 
      keys[R] = true; 
      //println("r pressionado"); 
      break;   
    } 
} 

void keyReleased(){ 
    keyP = key; 
    switch(keyP){ 
     case 'A': 
     case 'a': 
      keys[A] = false; 
      //println("a solto"); 
      break; 
     case 'W': 
     case 'w': 
      keys[W] = false; 
      //println("w solto"); 
      break; 
     case 'S': 
     case 's': 
      keys[S] = false; 
      //println("s solto"); 
      break; 
     case 'D': 
     case 'd': 
      keys[D] = false; 
      //println("d solto"); 
      break; 
     case 'R': 
     case 'r': 
      keys[R] = false; 
      //println("r solto"); 
      break; 
    } 
} 
+0

嗨:) 首先感謝你的答案,但它沒有奏效,我試圖使用這個,但取代如果案件。並沒有什麼改變:/ 繼承人代碼: http://pastebin.com/5dtXTQwQ –

+0

嗨,代碼沒有編譯,它沒有競爭,但我更新了上面的代碼與你的改編,它在這裏工作...也許我沒有得到什麼是你的問題... –

+0

它工作完美:)。是的,我的代碼不完整,p。 真正的問題是: 當我執行操作後,我正在寫Key [NameKey] = false,所以我就像是「double falsifying」,因爲KeyRelesead正在爲我做。 謝謝:D –