• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    HTML5Canvas動畫設計解析

    來源:懂視網 責編:小采 時間:2020-11-27 15:16:23
    文檔

    HTML5Canvas動畫設計解析

    HTML5Canvas動畫設計解析: 我們使用JavaScript操控canvas元素可以很容易做出可互動的動畫。但是當初canvas元素并不是為此而設計的(與Flash不同),因此存在一些限制。 其中最大的限制就是Canvas元素中的圖形一經繪制就不會改變,除非你要人為改變它。如果我們需要改變Canvas元
    推薦度:
    導讀HTML5Canvas動畫設計解析: 我們使用JavaScript操控canvas元素可以很容易做出可互動的動畫。但是當初canvas元素并不是為此而設計的(與Flash不同),因此存在一些限制。 其中最大的限制就是Canvas元素中的圖形一經繪制就不會改變,除非你要人為改變它。如果我們需要改變Canvas元
    我們使用JavaScript操控canvas元素可以很容易做出可互動的動畫。但是當初canvas元素并不是為此而設計的(與Flash不同),因此存在一些限制。

    其中最大的限制就是Canvas元素中的圖形一經繪制就不會改變,除非你要人為改變它。如果我們需要改變Canvas元素中繪制的圖形,我們就必須先重繪相應的圖形。重繪復雜的圖形會花費掉很多的時間,因此動畫效果也將受限于電腦的速度。

    實現動畫的原理

    1、重繪canvas

    除非你會畫一些能夠填滿整個canvas的圖形(例如背景圖),否則你有必要**先前繪制的所有圖形。而最簡單的方法是使用clearRect方法。

    2、保存canvas狀態

    如果你更動了任何一個會影響到canvas狀態的設定(樣式、變形等等),并且希望能夠確保每一次繪制畫格時都是原本的狀態,你就需要保存canvas狀態。

    3、繪制移動中的圖形

    在這一步驟里才真正畫出需要移動的圖形。

    4、讀取canvas狀態

    如果你先前保存過Canvas的狀態,就先在畫新的圖形之前讀取之前的狀態。

    動畫的操控

    1161.png


    圖形是以直接使用canvas方法或調用自訂的函數所繪制的。在正常情況下,當JavaScript執行完成時,我們就能看見呈現在canvas上的結果。

    我們需要一個方法,能在一段時間內循環執行我們的繪圖函數。有兩個方法可操控這樣的動畫。首先,這里有setInterval和setTimeout函數,可用來在指定的時間內調用特定的函數。

    setInterval(animateShape,500);
    setTimeout(animateShape,500);

    如果你不需要和用戶互動,就最好使用setInterval函數,他會重復執行預先準備好的代碼。在上面的例子里,animateShape函數是每500毫秒(一秒的一半)執行一次。setTimeout函數只會在設定好的時間點上執行一次。


    第二個方法是我們可以利用用戶的輸入來操控。如果我們想要制作游戲,我們可以使用鍵盤或滑鼠的事件來操控動畫。只需設定事件接收器(eventListener),我們就能捕捉任何的使用者動作,并執行我們的動畫函數。


    動畫范例


    在這個范例中,我們使用setInterval函數來操控動畫,使小型的太陽系模擬系統動起來。

    var sun = new Image();
    var moon = new Image();
    var earth = new Image();
    function init(){
     sun.src = 'images/sun.png';
     moon.src = 'images/moon.png';
     earth.src = 'images/earth.png';
     setInterval(draw,100);
    }
    function draw() {
     var ctx = document.getElementById('canvas').getContext('2d');
     ctx.globalCom**iteOperation = 'destination-over';
     ctx.clearRect(0,0,300,300); // **canvas
     ctx.fillStyle = 'rgba(0,0,0,0.4)';
     ctx.strokeStyle = 'rgba(0,153,255,0.4)';
     ctx.save();
     ctx.translate(150,150);
     // 地球
     var time = new Date();
     ctx.rotate( ((2*Math.PI)/60)*time.getSeconds() +
     ((2*Math.PI)/60000)*time.getMilliseconds() );
     ctx.translate(105,0);
     ctx.fillRect(0,-12,50,24); // 陰影
     ctx.drawImage(earth,-12,-12);
     // 月球
     ctx.save();
     ctx.rotate( ((2*Math.PI)/6)*time.getSeconds() +
     ((2*Math.PI)/6000)*time.getMilliseconds() );
     ctx.translate(0,28.5);
     ctx.drawImage(moon,-3.5,-3.5);
     ctx.restore();
     ctx.restore();
     
     ctx.beginPath();
     ctx.arc(150,150,105,0,Math.PI*2,false); // 地球軌道
     ctx.stroke();
     ctx.drawImage(sun,0,0,300,300);
    }

    引用MOZILLA DEVELOPER NETWORK


    轉自houoop

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    HTML5Canvas動畫設計解析

    HTML5Canvas動畫設計解析: 我們使用JavaScript操控canvas元素可以很容易做出可互動的動畫。但是當初canvas元素并不是為此而設計的(與Flash不同),因此存在一些限制。 其中最大的限制就是Canvas元素中的圖形一經繪制就不會改變,除非你要人為改變它。如果我們需要改變Canvas元
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 成人精品一区二区久久| 亚洲福利精品电影在线观看| 精品午夜国产人人福利| 99久久这里只有精品| 亚洲欧洲成人精品香蕉网| 久久线看观看精品香蕉国产| 日韩精品无码一区二区三区免费 | 色欲国产麻豆一精品一AV一免费| 无码人妻一区二区三区精品视频| 亚洲国产精品无码AAA片| 99热精品久久只有精品| heyzo高无码国产精品| 最新国产在线精品观看| 欧美国产成人久久精品| 国产三级精品三级在专区| 一本久久a久久精品综合夜夜| 久久中文精品无码中文字幕| 成人精品一区二区久久久| 动漫精品专区一区二区三区不卡| 国产精品亚洲精品日韩已方| 欧美精品福利视频| 99热精品在线观看| 国产三级精品三级在线专区1| 国内精品久久久久久久涩爱| 91精品日韩人妻无码久久不卡 | 国产亚洲午夜高清国产拍精品 | 国产成人亚洲合集青青草原精品| 国产精品亚洲不卡一区二区三区 | 四虎精品影库4HUTV四虎| 精品久久久久久久久久中文字幕 | 久久精品国产99国产电影网| 一本色道久久88精品综合| 全国精品一区二区在线观看| 久久er国产精品免费观看8| 精品水蜜桃久久久久久久| 精品久久久无码中文字幕 | 欧洲精品久久久av无码电影| 在线观看自拍少妇精品| 亚洲国产精品成人午夜在线观看| jizz国产精品| 国产A级毛片久久久精品毛片 |