12-2 setInterval與clearInterval
日期物件可以存取日期與時間的資料。setInterval與clearInterval函數常用於遊戲設計。setInterval函數可以每隔一段時間(週期)執行指定的函數,也可以用來更新舞台上的畫面;停止setInterval執行的週期迴圈則使用clearInterval函數,利用呼叫setInterval傳回的週期識別名稱,再傳遞給clearInterval來停止週期迴圈。所以執行setInterval的同時要記得取得其傳回的識別名稱,否則將無法終止週期迴圈。
一、setInterval函數
語法:interval_id=setInterval (functionName, interval )
功能:每隔interval毫秒(即1/1000秒)執行指定的函數。
說明:
1. functionName:被執行的函數。
2. interval:執行函數的週期,以毫秒為單位。
3. 執行setInterval函數時,傳回一個整數存於週期數值識別名稱,讓clearInterval可以透過該識別名稱停止週期迴圈。
二、clearInterval函數
語法:clearInterval (interval_id)
功能:停止setInterval執行的週期迴圈。
說明:interval_id:先前呼叫setInterval傳回的週期識別名稱。
利用setInterval與clearInterval函數製作載入影片進度。(請和第十章的影格迴圈方法比較)
執行【ch12/ loading_setInterval.swf】檔案。
載入【ch12/ loading_setInterval.fla】檔案。
【action】圖層:
影格1程式
01 02 03 04 05 06 07 08 09 10 11 12 13 14 |
load_id= setInterval(Loading, 100); stop(); function Loading() { loaded = getBytesLoaded(); total = getBytesTotal(); percentage = Math.round((loaded / total)*100); loading_mc.percent_txt = percentage + "%"; loading_mc.bar._xscale = percentage; if ( percentage == 100 ) { clearInterval(load_id); gotoAndPlay(2); } } |
解說:
行01:指定setInterval每100毫秒(1/10秒)執行Loading自訂函數,傳回一個整數存於週期數值識別名稱load_id。
行02:影片停止動作。(等待載入完成)
行04∼10:Loading自訂函數。
行05∼09:和第十章的影格迴圈法相同。
行10∼13:判斷如果載入百分比已經100,則用clearInterval停止週期迴圈,跳到第二影格秀出主要內容。
影格2程式
01 |
stop(); |
解說:
行01:影片停止動作,秀出主要內容。