2011-08-09 51 views
0

我將輸入爲x/y座標的流,如果這些座標在給定的時間段(例如2秒)內落在指定的範圍內,我想觸發一個事件。有人可以建議一種方法來做到這一點?javascript timed event

回答

2

算法上,當你第一次檢測到它在範圍內時,你做一個setTimeout() 2秒。從那時起,如果座標在邊界內並且計時器已經設置好,你什麼也不做。如果座標不在界限內,則用clearTimeout()停止計時。如果計時器在清除之前觸發,那麼座標在所需的時間內保持在界限內。

下面是一個代碼示例:

var myTimer = null; 

function processCoordinatePair(x,y) { 
    if (inBounds(x,y)) { 
     if (!myTimer) { 
      setTimeout(function() { 
       // we stayed in bounds for 2 seconds, do whatever needs doing 
       myTimer = null;   // clear timer for future use 
      }, 2000); 
     } 
    } else {       // not in bounds any more 
     if (myTimer) { 
      clearTimeout(mytimer);  // if timer was running, stop it 
      myTimer = null; 
     } 
    } 
} 

inBounds()功能的實現顯然是由你,因爲你還沒有描述的問題的一部分。