2015-12-04 31 views
0

我是一個初學者程序,嘗試使用處理來創建「Simon」內存遊戲。我目前使用計時器每秒顯示一個新對象。但是,我無法確定如何使對象在顯示後立即消失(例如,在出現後半秒鐘)。我已經嘗試創建第二個計時器對象,在一段時間後重繪背景,但它不起作用。任何幫助是極大的讚賞!!使用計時器在處理中顯示和隱藏對象

int j = 0; 
void draw() { 
if (displayTimer.isFinished()){ 
    hideTimer.start(); 
    if(hideTimer.isFinished()){ 
    drawBackground(); 
    } 
     if (nomisSequence[j] == color(255, 0, 0)) { 
     drawBackground(); 
     button1.display(); 
     } 
     else if (nomisSequence[j] == color(0, 255, 0)) { 
     drawBackground(); 
     button2.display(); 
     } 
     else if (nomisSequence[j] == color(0, 0, 255)) { 
     drawBackground(); 
     button3.display(); 
     } 
     else if (nomisSequence[j] == color(255, 255, 0)) { 
     drawBackground(); 
     button4.display(); 
     } 

     if(hideTimer.isFinished()){ 
     drawBackground(); 
     } 

     j++; 
     displayTimer.start(); 
     hideTimer.start(); 
    } 
} 
+0

什麼是'displayTimer'和'hideTimer'?當你說它不起作用時,你究竟是什麼意思? –

+0

displayTimer和hideTimer是我使用「Timer」類創建的對象。 – rayaron

+0

我有一個顏色數組(紅色藍色綠色和黃色),並且如果在一行中碰巧有兩個「紅色」,即[1] =顏色(255,0,0)和[2] =顏色(255 ,0,0)時,應用程序會在另一個頂部顯示一個紅色框,而不是使第一個框先消失(即,看起來好像紅色框長時間顯示)。 – rayaron

回答

0

我不知道你使用的是什麼timer對象,但你並不需要它們。處理有一個方便的millis()功能,您可以使用。

只需記錄您想要的任何事件的開始時間,然後檢查該開始時間加上持續時間是否小於當前時間。

事情是這樣的:

int startMillis; 
int duration = 1000; 

void draw() { 
    background(0); 
    if (mousePressed) { 
    startMillis = millis(); 
    } 

    if (millis() < startMillis + duration) { 
    ellipse(mouseX, mouseY, 10, 10); 
    } 
} 
+0

在計時器類,我使用如果計時器完成,檢查一個布爾(對不起,我無法找出如何發佈此代碼): 「空隙開始(){ savedTime =米利斯(); } boolean isFinished(){ int passedTime = millis() - savedTime; if(passedTime> totalTime){ return true; } else { return false; } – rayaron

+0

內聯代碼使用backtics'\''不是單引號''' –