2022年1月20日 星期四

LimeJS : 讓 lime.scheduleManager 清除所有任務

2022年1月20日 星期四

在處理 HTML5 FUN 工具嵌入 Blogger 時,因為再重新執行程式時,動畫速度就會加快一次,到最後,畫面實在是有一點滑稽。本來以為 LimeJS 的動畫是單純利用 setInterval 來定時執行而已,我將索性把所有 setInterval 的通通砍光,動畫就不會再播放了。

答案只猜對了一半 ,它是會停下來,但是再次載入程式時,所有的未透過 lime.scheduleManager 管理的程序,會一直累加進去;所以我的 HTML5 Lotto 彩球就一直增加,滿天的彩球亂飛。

仔細的研究了一下 lime.scheduleManager 的原始碼檔案

  • schedulemanager.js

原來它建立了自己的堆疊,只用了一次 setInterval 定時去檢查堆疊中的「任務」。因為堆疊全域的變數,而且程式在重新執行時,並不會將它重建。才會有「彩球滿天飛」的情形。

為了避免這種情形,如果想將所有的「任務」都清空,那就執行 lime.scheduleManager 中的 disable_() :


if(typeof(lime.scheduleManager)!='undefined' && lime.scheduleManager!=null ) {
  lime.scheduleManager.active_ = true;
  lime.scheduleManager.disable_();
}


這樣它就會將堆疊清空囉!

其實正常情形是不需要這樣做,除非像我一樣,程式不是在完全乾淨的環境中重新來過,才需要考慮到「垃圾」、「遺毒」的問題。


沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket