2013-08-19 97 views
0
var fps = 30; 
var drawInterval; 

imageSprite.addEventListener('load',init,false); 

function init() { 
    drawBg(); 
    startDrawing(); 
} 

function draw() {   
    clearJet(); 
    drawJet(); 
} 

function startDrawing() { 
    stopDrawing(); 
    drawInterval = setInterval(draw,1000/fps); 
} 

function stopDrawing() { 
    clearInterval(drawInterval); 
} 

任何人都可以解釋爲什麼我們要在drawInetrval之前執行stopDrawing()函數,以及這段代碼如何執行。SetInterval和clearInterval解釋

回答

1

本質上與clearInternal停止drawInterval引用的時間間隔。

你可以看看它,就好像它是設置drawInterval = null

這是爲了防止在多個間隔發射:每次startDrawing被調用時,你重置當前正在進行的間隔,開始新的一個將在1000/FPS毫秒火,即drawInterval將火1000/fps毫秒startDrawing被調用後最後一次。

+0

是否意味着多次調用'startDrawing()'函數,或者多次引用'setInterval(draw,1000/fps)'?如果這是爲什麼我們首先使用'stopDrawing()'函數,而不是在間隔被觸發之後。 – Unknown5566

+0

每次'imageSprite'完成加載其內容時,都會調用'startDrawing'。如果在開始間隔後調用'stopDrawing',則只需立即停止 - 這不是您想要的。在實際開始間隔之前調用'stopDrawing'意味着如果間隔已經運行,它會被停止,並且一個新的在'1000/fps'毫秒後開始(並且由於它是一個間隔,它會持續激發每個「1000/fps」女士。 – fusio

0

它只是清除間隔,以便您不會同時運行多個間隔。