<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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
        主站蜘蛛池模板: 自拍日韩亚洲一区在线| 精品国产_亚洲人成在线| 亚洲国产二区三区久久| 色婷婷六月亚洲婷婷丁香| 亚洲一区二区久久| 亚洲s码欧洲m码吹潮| 一级特黄录像视频免费| 两个人的视频www免费| 91制片厂制作传媒免费版樱花| 2019中文字幕在线电影免费| 免费理论片51人人看电影| 国产成人亚洲综合无码| 91亚洲国产在人线播放午夜| 亚洲AV无码专区国产乱码不卡| 好猛好深好爽好硬免费视频| 五月婷婷在线免费观看| 免费大黄网站在线观| 亚洲成在人线电影天堂色| 国产成人不卡亚洲精品91| 免费视频一区二区| 日本特黄a级高清免费大片| 久久精品国产亚洲一区二区| 亚洲一区二区三区高清在线观看 | 免费吃奶摸下激烈视频| 日本亚洲中午字幕乱码| 免费欧洲毛片A级视频无风险| 久热综合在线亚洲精品| 亚洲成a人片在线观看天堂无码 | 亚洲网站在线免费观看| 黄色一级视频免费| 国产在线a免费观看| 相泽亚洲一区中文字幕| 亚洲精品无码久久久久APP | 国产亚洲美日韩AV中文字幕无码成人 | 久久精品成人免费看| 亚洲国产一区二区三区青草影视| 日韩人妻无码精品久久免费一| 夜色阁亚洲一区二区三区| 亚洲天堂免费在线| 内射无码专区久久亚洲| 拍拍拍无挡视频免费观看1000|