2015-01-03 4 views

답변

1

이 가능한 방법 중 하나입니다 :이 도움이

import java.util.HashMap; 
import java.util.Map; 
import processing.core.PApplet; 
import processing.event.KeyEvent; 

// this map holds currently pressed keys 
private Map<Character, Record> map = new HashMap<Character, Record>(); 

public void setup() { 
... 
} 

public void draw() { 
... 
} 

@Override 
public void keyPressed(KeyEvent event) { 
    char key = event.getKey(); 

    // only if map doesn't hold this key yet 
    if (!map.containsKey(key)) { 

     // create new record with this key and start timestamp 
     Record record = new Record(key, millis()); 
     map.put(key, record); 
    } 
} 

@Override 
public void keyReleased(KeyEvent event) { 
    char key = event.getKey(); 

    // retrieve record for this key 
    Record record = map.get(key); 

    // store release timestamp (milliseconds from program startup) 
    record.releaseTime = millis(); 

    map.remove(key); 

    // now record has full info 
    println(key + ", time: " + (record.releaseTime - record.pressedTime)); 
} 

class Record { 
    char key; 
    long pressedTime; 
    long releaseTime; 

    Record(char key, long pressedTime) { 
     this.key = key; 
     this.pressedTime = pressedTime; 
    } 
} 

희망 ...

2

처리로 아주 쉽게. keyPressed()keyReleased()을 살펴보십시오.

// create a variable to store the time 
int t = 0; 

void setup() { 
    // whatever you need to do here 
} 

void draw() { 
    // do other stuff here 
} 

// when 'b' key is pressed, store the current 
// time in milliseconds since the program started 
void keyPressed() { 
    if (key == 'b') { 
    t = millis();  
    } 
} 

// when the 'b' key is released, subtract the start 
// time from the current time to get the duration 
void keyReleased() { 
    if (key == 'b') { 
    t = millis() - t; 
    println("b key held for " + t + " milliseconds"); 
    } 
}