2013-04-25 67 views
1

我創建了一個動態的畫布使用以下功能:與變量處理中單擊事件

var animating=false; 
function create_canvas(Container,Id,Width,Height) 
{ 
...//set width,height 
//added a click event listener 
document.getElementById(Id).addEventListener("click", function() 
     { 
      if(animating==true) 
      { 
       alert("Running the animation"); //can't reach this part 
       return; 
      } 
      else 
      { 
       animating=true; 
       run_canvas(); 
       animating=false; 
      } 
     }); 
...//append to Container 
} 
function run_canvas() 
{ 
...//some code here 
} 

現在,每當我點擊畫布上的動畫開始,不管是什麼。我的意思是,全局變量動畫沒有得到它的價值改變。因此我的問題是:我做錯了什麼,我該如何處理這種情況。

+0

你可以發佈你的動畫代碼嗎? – 2013-04-25 11:19:47

+0

在我的動畫代碼中,我不改變變量動畫,它是一個很長的代碼:)實現k-means聚類。 – ssBarBee 2013-04-25 11:20:55

回答

3

run_canvas方法可能會異步執行其動畫代碼,但在動畫啓動後立即執行將animating屬性設置爲false的語句。當完成動畫時,您需要在run_canvas方法中將屬性設置爲false,或者在完成時觸發事件並在事件處理程序中設置屬性。

+1

你怎麼知道它是非阻塞的? – JJJ 2013-04-25 11:16:18

+0

@Juhana - 似乎從細節上看不到?也許我應該磨練我的回答。 – 2013-04-25 11:18:28

+0

你是否建議和run_canvas()結束我應該添加animating = false; – ssBarBee 2013-04-25 11:23:19