首頁  >  文章  >  web前端  >  HTML5如何繪製動畫? (程式碼實例)

HTML5如何繪製動畫? (程式碼實例)

云罗郡主
云罗郡主轉載
2018-10-20 15:45:494198瀏覽

本篇文章帶給大家的內容是關於HTML5如何繪製動畫? (程式碼實例) ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

雖然canvas的API並未直接提供支援動畫的方法,但就其本身而言,在canvas中實現動畫效果也很簡單:只需要持續的更新並重繪畫布就行了。這種持續的更新並重繪就叫做動畫循環,它是所有動畫的核心邏輯。

在canvas中實作動畫,首先需要初始化畫布上的物件。然後,啟動一個動畫循環來更新畫布、清除畫布、重繪畫布,再請求下一個新的動畫影格。

HTML5如何繪製動畫? (程式碼實例)

接下來透過一個簡單實例,來看看canvas動畫的實作過程。這個實例以動畫的方式,實作一個旋轉的八卦圖。程式碼如下:

function clear() {  
   context.clearRect(0, 0, canvas.width, canvas.height);
}
function rotate() {
   context.rotate(Math.PI/30);  // 每分钟旋转一周
}
function draw () {
    // 绘制白色半圆
   context.beginPath();
   context.arc(0, 0, 80, 1.5*Math.PI, Math.PI/2, false);
   context.fillStyle = "white";
   context.closePath();
   context.fill();
           
   // 绘制黑色半圆
   context.beginPath();
   context.arc(0, 0, 80, Math.PI/2, 1.5*Math.PI, false);
   context.fillStyle = "black";
   context.closePath();
   context.fill();
           
    // 绘制黑色小圆
    context.beginPath();
    context.arc(0, 40, 40, 0, Math.PI*2, true);
    context.fillStyle = "black";
    context.closePath();
    context.fill();
           
    // 绘制白色小圆
    context.beginPath();
    context.arc(0, -40, 40, 0, Math.PI*2, true);
    context.fillStyle = "white";
    context.closePath();
    context.fill();
           
    // 绘制白色小圆心
    context.beginPath();
    context.arc(0, -40, 5, 0, Math.PI*2, true);
    context.fillStyle = "black";
    context.closePath();
    context.fill();
           
    // 绘制黑色小圆心
    context.beginPath();
    context.arc(0, 40, 5, 0, Math.PI*2, true);
    context.fillStyle = "white";
    context.closePath();
    context.fill();
}
function drawStage() {
     rotate();  // 更新
     clear();   // 清除
     draw();    // 重绘
}
window.onload = function(){
    canvas = document.getElementById('canvas');
    context = canvas.getContext('2d');
          
    context.translate(canvas.width/2, canvas.height/2);
          
    setInterval(drawStage, 100);
};

上述程式碼,當頁面載入完成後,先進行初始化,然後呼叫setInterval(drawStage, 100)方法啟動動畫迴圈,在動畫迴圈中,每隔100ms會呼叫一次drawStage ()函數,來執行更新畫布、清除畫布、重繪畫布的操作,以實現動畫效果。運作結果如圖 4‑37 所示:

當然,這裡只是為了示範實作動畫的原理而已,所以實例相對簡單。其實,Canvas中的動畫可以很簡單,也可以很複雜。不管簡單還是複雜,其基本原理是完全相同的。

以上就是對HTML5如何繪製動畫? (程式碼實例) 的完整介紹,如果您想了解更多有關Html5影片教學,請追蹤PHP中文網。


以上是HTML5如何繪製動畫? (程式碼實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除