pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

HTML5 Canvas動畫設計解析

我們使用JavaScript操控canvas元素可以很容易做出可互動的動畫。但是當初canvas元素并不是為此而設計的(與Flash不同),因此存在一些限制。其中最大的限制就是Canvas元素中的圖形一經繪
       我們使用JavaScript操控canvas元素可以很容易做出可互動的動畫。但是當初canvas元素并不是為此而設計的(與Flash不同),因此存在一些限制。

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

實現動畫的原理

1、重繪canvas

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

2、保存canvas狀態

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

3、繪制移動中的圖形

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

4、讀取canvas狀態

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

動畫的操控


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

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

  1. setInterval(animateShape,500);
  2. setTimeout(animateShape,500);
復制代碼


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

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

動畫范例

在這個范例中,我們使用setInterval函數來操控動畫,使小型的太陽系模擬系統動起來。
  1. var sun = new Image();
  2. var moon = new Image();
  3. var earth = new Image();
  4. function init(){
  5.   sun.src = 'images/sun.png';
  6.   moon.src = 'images/moon.png';
  7.   earth.src = 'images/earth.png';
  8.   setInterval(draw,100);
  9. }

  10. function draw() {
  11.   var ctx = document.getElementById('canvas').getContext('2d');

  12.   ctx.globalCom**iteOperation = 'destination-over';
  13.   ctx.clearRect(0,0,300,300); // **canvas

  14.   ctx.fillStyle = 'rgba(0,0,0,0.4)';
  15.   ctx.strokeStyle = 'rgba(0,153,255,0.4)';
  16.   ctx.save();
  17.   ctx.translate(150,150);

  18.   // 地球
  19.   var time = new Date();
  20.   ctx.rotate( ((2*Math.PI)/60)*time.getSeconds() +
  21.                       ((2*Math.PI)/60000)*time.getMilliseconds() );
  22.   ctx.translate(105,0);
  23.   ctx.fillRect(0,-12,50,24); // 陰影
  24.   ctx.drawImage(earth,-12,-12);

  25.   // 月球
  26.   ctx.save();
  27.   ctx.rotate( ((2*Math.PI)/6)*time.getSeconds() +
  28.                           ((2*Math.PI)/6000)*time.getMilliseconds() );
  29.   ctx.translate(0,28.5);
  30.   ctx.drawImage(moon,-3.5,-3.5);
  31.   ctx.restore();

  32.   ctx.restore();
  33.   
  34.   ctx.beginPath();
  35.   ctx.arc(150,150,105,0,Math.PI*2,false); // 地球軌道
  36.   ctx.stroke();

  37.   ctx.drawImage(sun,0,0,300,300);
  38. }
復制代碼


引用MOZILLA DEVELOPER NETWORK


轉自houoop


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了基于HTML5 Canvas的3D動態Chart圖表的示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了HTML5 Canvas 實現圓形進度條并顯示數字百分比效果示例,具有一定的參考價值,有興趣的可以了解一下
這篇文章主要介紹了HTML5 Canvas 旋轉風車繪制,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
這篇文章主要介紹了html5 canvas合成海報所遇問題及解決方案總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
主站蜘蛛池模板: 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 杭州双螺杆挤出机-百科| 新疆散热器,新疆暖气片,新疆电锅炉,光耀暖通公司 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 防火窗_耐火窗_防火门厂家_防火卷帘门-重庆三乐门业有限公司 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 动力配电箱-不锈钢配电箱-高压开关柜-重庆宇轩机电设备有限公司 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 衬氟旋塞阀-卡套旋塞阀-中升阀门首页 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 钢木实验台-全钢实验台-化验室通风柜-实验室装修厂家-杭州博扬实验设备 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 不发火防静电金属骨料_无机磨石_水泥自流平_修补砂浆厂家「圣威特」 |