2013-06-28 2 views
0

Я хочу использовать функцию keyPressed в классе холста. но я не хочу сразу вызвать эту функцию.
Я пытаюсь использовать функцию ожидания, но это вызывает ошибку (я думаю, что для этого не используется). что мне делать?Как можно вызвать функцию keyPressed после определенного времени?

+0

я не могу поверить, что после того, как 10hour нет ответа в стек переполнения !!!!!!!! – zahraTZ

ответ

0

keyPressed вызывается AMS (Application Management Software), когда пользователь нажимает клавишу. Вы не можете отложить это. Но вы можете, конечно, позвонить keyPressed самостоятельно, как хотите. Если вы хотите вызвать keyPressed через 10 секунд, вы должны создать Thread с таймером и петлей, который спросит, прошло ли 10 секунд. Что-то вроде этого: (не проверено)

class keyPressedAfterSeconds implemments Runnable { 

    MyCanvasObject myCanvas = null; 
    int seconds = 10; // Default 
    long startTime; 

    public keyPressedAfterSeconds(MyCanvasObject myCanvas, int seconds) { 

    this.myCanvas = myCanvas; 
    this.seconds = seconds; 
    new Thread(this).start(); 

    } 

    public run() { 

    startTime = System.currentTimeMillis(); 
    while(System.currentTimeMillis()-startTime<seconds*1000) { 
     try { // Wait 100 ms and ask again 
     Thread.sleep(100); 
     } catch (Exception e) {} 
    } 
    myCanvas.keyPressed(someKeycode); 

    } 

} 
+0

И затем в вашем MyCanvasObject вы вызываете новый keyPressedAfterSeconds (это, 10); –