iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
1
自我挑戰組

學習 canvas 日記系列 第 18

第 18 天 setInterval、clearInterval

  • 分享至 

  • xImage
  •  

setInterval 執行後就會不斷的重覆

setInterval(function, milliseconds, param1, param2, ...)

重覆一次的速度 milliseconds 1秒 = 1000
直到關閉視窗或是執行到 clearInterval 為止
需要先設定 ID值 之後在 clearInterval 會用到

clearInterval(var)

因為要把一直在重覆動作的 function 停止
所以 clearInterval 的參數 var 就是 ID值


直接用 "計數" 為例
載入後就開始計算時間

var startTime=new Date();
var count = setInterval(function(){  // count = ID值
      console.log(Math.round((new Date()-startTime)/1000));
},1000);

每過一秒就會看到 console 加一
直到按下 button 停止鍵執行 clearInterval

<button onclick="stop();">停止</button>

按下停止鍵執行 clearInterval

var stop = function(){
  clearInterval(count);
}

這在 canvas 可以作為連續動畫使用
例如要讓矩形原地旋轉

var num = 0;
var rotate_rect = setInterval(function(){
      ctx.clearRect(0, 0, 200, 200);
      num++;  // 數字累加
      ctx.save();
      ctx.translate(100, 80);
      ctx.rotate(num * Math.PI/180);
      ctx.translate(-100, -80);
      ctx.beginPath(); 
      ctx.rect(40,60,120, 40); 
      ctx.fill();
      ctx.restore(); 
},10);

停止

var stop = function(){
  clearInterval(rotate_rect);
}

https://i.imgur.com/WRgXZw5.gif


上一篇
第 17 天 旋轉、放大、縮小
下一篇
第 19 天 setInterval 轉出轉入
系列文
學習 canvas 日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言