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中文門戶。
主站蜘蛛池模板: 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 中宏网-今日新闻-财经新闻| 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 南京和瑞包装有限公司 | 软文世界-软文推广-软文营销-新闻稿发布-一站式软文自助发稿平台 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 伺服电机维修、驱动器维修「安川|三菱|松下」伺服维修公司-深圳华创益 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 名律网-法律问题咨询-找律师-法律知识| 七维官网-水性工业漆_轨道交通涂料_钢结构漆 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 等离子空气净化器_医用空气消毒机_空气净化消毒机_中央家用新风系统厂家_利安达官网 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | IPO咨询公司-IPO上市服务-细分市场研究-龙马咨询 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 聚合甘油__盐城市飞龙油脂有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 400电话_400电话申请_888元包年_400电话办理服务中心_400VIP网 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 软装设计-提供软装装饰和软装配饰及软装陈设的软装设计公司 | 上海办公室装修,办公楼装修设计,办公空间设计,企业展厅设计_写艺装饰公司 |