`
128kj
  • 浏览: 600543 次
  • 来自: ...
社区版块
存档分类
最新评论

HTML5 Canvas 精灵表动画实例

阅读更多
两张精灵表图片:




这里可以看效果:
http://www.108js.com/article/article3/view/30161/an.html

<!DOCTYPE html> 
  <html> 
    <head> 
     <meta charset="gbk">
     <title>精灵表动画实例</title>            
     <style type="text/css"> 
       #draw-target {
        width:480px;
        height:320px;
        background-color:#ccf;
        position:relative;
        border:1px solid;
       }
      </style> 
     <script type="text/javascript"> 
 	 
    function CanvasSprite(params) {
       this.x=params.x;//精灵在画布中的x坐标
       this.y=params.y;
       this.index=params.index;//精灵图片的索引,从左到右,从0开始
       this.ctx = params.ctx;//画布的上下文,绘图的地方
       this.width = params.width;//精灵图片的宽
       this.height = params.height;
       this.imagesWidth = params.imagesWidth;//精灵表的宽
       //精灵在精灵表中的位置
       this.vOffset = Math.floor(this.index*this.width / this.imagesWidth) * this.height;
       this.hOffset = (this.index*this.width) % this.imagesWidth;

       this.hide = false;
       this.img = new Image();
       this.img.src = params.images;//精灵表图片
       this.act=params.act;//精灵的动作行为
     }
     //在画布中绘制精灵
     CanvasSprite.prototype.draw=function() {
        if (this.hide) {
            return;
        }
        this.ctx.drawImage(this.img, this.hOffset, this.vOffset, this.width, this.height,this.x , this.y, this.width, this.height);
     }
     
      //改变精灵的索引
    CanvasSprite.prototype.changeImage=function(index) {
        this.index =index;
            this.vOffset = Math.floor(this.index*this.width / this.imagesWidth) * this.height;
            this.hOffset = (this.index*this.width) % this.imagesWidth;
     }
      CanvasSprite.prototype.show=function() {
            this.hide = false;
        }
        
       CanvasSprite.prototype.hide=function() {
            this.hide = true;
        }
  
        CanvasSprite.prototype.destroy=function () {
            return;
        }
  
       //精灵的行为,交给实现了ac()方法的对象
      CanvasSprite.prototype.move= function(drawTarget) {  
         this.act.ac(this,drawTarget); 
       }
        //精灵1的动作
       function action(){
        this.ac=function(canvasSprite,drawTarget){
          var maxX=drawTarget.width - 64;
          var maxY= drawTarget.height - 64;  
          canvasSprite.x += 2;
          canvasSprite.y += 2; 
          canvasSprite.index++;
          if(canvasSprite.index>=5) canvasSprite.index=0;
          if(canvasSprite.x>maxX) canvasSprite.x-=2;
          if(canvasSprite.y>maxY) canvasSprite.y-=2;
          canvasSprite.changeImage(canvasSprite.index);
       }
     }
    //精灵2的动作
    function action1(){
        this.ac=function(canvasSprite,drawTarget){
          canvasSprite.index++;
          if(canvasSprite.index>=4) canvasSprite.index=0;
          canvasSprite.changeImage(canvasSprite.index);
       }
     }

   
   window.onload=function() {
     var canvas = document.getElementById('draw-target');
     var ctx=canvas.getContext("2d");
     var drawTarget=document.getElementById("draw-target");

     //精灵1的参数
     var para={
           x:0,
           y:0,
           index:0,
           images: 'cogs.png',
           imagesWidth: 256,
           width: 64,
           height: 64,
           ctx:ctx,
          act:new action()
      }
       //精灵2的参数
      var para1={
           x:200,
           y:0,
           index:0,
           images: 'ren.png',
           imagesWidth: 240,
           width: 60,
           height: 60,
           ctx:ctx,
           act:new action1()
      }

     var sprite1=new CanvasSprite(para);
     var sprite2=new CanvasSprite(para1);
   
    
      function moveAll() {	
       ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);
       sprite2.move(drawTarget);
       sprite1.move(drawTarget);	
       sprite2.draw();
       sprite1.draw();
       setTimeout(moveAll, 50);
      }
    moveAll(); 
    
   }
   </script> 
        </head>              
        <body> 
         精灵动画.
 
         <canvas id="draw-target" width = 480 height = 320> 浏览器不支持HTML5
         </canvas>           
			
        </body>    
    </html>



下载源代码:http://www.108js.com/article/article3/30161.html
  • 大小: 27.9 KB
  • 大小: 72.1 KB
1
1
分享到:
评论

相关推荐

    html5 canvas云粒子数字时钟动画特效

    在这个“html5 canvas云粒子数字时钟动画特效”中,我们看到的是Canvas技术与时间显示、粒子系统相结合的应用实例。下面将详细阐述相关知识点。 1. HTML5 Canvas API: HTML5 Canvas是一个基于矢量图形的画布,...

    HTML5 Canvas核心技术图形动画与游戏开发 ((美)David Geary) 中文【PDF】

    基瑞编著的《HTML5Canvas核心技术:图形动画与游戏开发》是HTML5 Canvas领域的标杆之作,也是迄今为止该领域内容最为全面和深入的著作之一,是公认的权威经典、Amazon五星级超级畅销书、资深技术专家David Geary*...

    HTML5 Canvas高楼大厦城市建筑剪影动画特效

    如果动画涉及到大量元素,使用精灵表(Sprite Sheets)和批处理绘制(batch drawing)可以提高性能。 总结来说,这个HTML5 Canvas特效展示了如何结合JavaScript和Canvas API来创建复杂的动画效果。它涵盖了路径绘制...

    HTML5 Canvas游戏开发实战(实例源代码)

    从简单的物理模拟、碰撞检测到复杂的精灵动画、游戏逻辑,Canvas都可以胜任。本书的实例源代码将会涵盖这些关键领域,帮助读者理解并实践游戏开发的各个环节。 1. **基础绘图**:Canvas API的基础包括设置颜色、...

    HTML5无尽下坠弹性僵尸背景Canvas特效动画

    总结来说,"HTML5无尽下坠弹性僵尸背景Canvas特效动画"是一个结合了HTML5 Canvas、JavaScript编程、物理模拟和动画设计的项目。它展示了如何利用Web技术创造出引人入胜的用户体验,同时也是一个学习和实践Canvas API...

    HTML5 Canvas头发飘逸动画.zip

    总的来说,“HTML5 Canvas头发飘逸动画”项目是一个结合了前端多个技术的实例,展示了HTML5 Canvas的强大功能,以及CSS、JavaScript和jQuery在创建复杂网页动画时的重要角色。通过学习这个项目,开发者可以深入了解...

    HTML5 Canvas 游戏开发实战PDF+源码

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建交互式游戏、动画和应用程序提供了可能。本书《HTML5 Canvas游戏开发实战》由张路斌(lufy_legend)编写,深入浅出地讲解了...

    HTML5 canvas沙丁鱼群游动画.zip

    在这个“HTML5 canvas沙丁鱼群游动画”项目中,开发者利用canvas来创建一个逼真的沙丁鱼在海洋中群游的动态效果。这个动画效果的实现基于jQuery库,版本为1.10.2,它是一个广泛使用的JavaScript库,简化了DOM操作、...

    逐帧动画精灵动画素材.zip

    总之,"逐帧动画精灵动画素材.zip"这个压缩包为学习和实践精灵动画、逐帧动画以及Html5交互动画提供了一个丰富的资源库。无论是对于初学者还是有一定经验的开发者,都可以从中获取灵感,探索动画的无限可能,并...

    html5 canvas神奇宝贝球Loading加载动画特效

    总的来说,"html5 canvas神奇宝贝球Loading加载动画特效"是一个结合了HTML5 Canvas技术和加载动画原理的实例,它展示了如何通过JavaScript和Canvas API创造出生动且引人入胜的Web交互体验。学习并理解这个案例,对于...

    基于HTML5实现僵尸行走动画实例源码.zip

    本实例"基于HTML5实现僵尸行走动画"将深入探讨如何利用HTML5的Canvas元素和JavaScript来创建一个僵尸行走的动画效果。 首先,Canvas是HTML5中的一个重要元素,它是一个可编程的画布,通过JavaScript可以绘制图形、...

    HTML5 Canvas 游戏开发实例详解

    ### HTML5 Canvas 游戏开发实例详解 #### HTML5 Canvas 技术简介 HTML5 Canvas 是一种用于在网页上绘制图形的技术。它通过 `&lt;canvas&gt;` 标签在 HTML 页面中定义一个区域,并允许 JavaScript 通过该区域进行绘图操作...

    HTML 5 CANVAS游戏开发实战_高清完整版

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,为创建丰富的交互式游戏和应用程序提供了可能。在这个“HTML 5 CANVAS游戏开发实战_高清完整版”中,我们将深入探讨如何利用Canvas ...

    HTML5 Canvas胡萝卜动画特效.zip

    这款“HTML5 Canvas胡萝卜动画特效”利用了Canvas的这一特性,为网页添加了一个有趣的背景特效,使多个胡萝卜形象连续不断地显现,营造出活泼生动的氛围。 在Canvas上实现动画特效,主要涉及以下几个核心概念: 1....

    Canvas粒子图形变形动画特效.zip

    Canvas粒子图形变形动画特效是一种基于HTML5 Canvas技术的动态视觉效果,它利用JavaScript编程语言来创建和控制粒子的运动轨迹、形状以及颜色变化,从而营造出极具吸引力的交互式用户体验。这种特效通常用于网站背景...

    h5 canvas赛车游戏

    总的来说,"h5 canvas赛车游戏"是一个很好的学习和实践HTML5 Canvas技术的实例,它涵盖了Canvas的基本绘图、动画制作、键盘交互等多个重要知识点。通过分析和理解这个游戏的源代码,你可以深入学习到如何使用HTML5 ...

    HTML5 canvas实现的草长莺飞动画场景效果源码.zip

    "HTML5 canvas实现的草长莺飞动画场景效果源码"这个项目,显然是利用canvas元素来创建一个生动的自然场景,其中包含风吹草动、鸟类飞翔等动态效果。下面将详细探讨HTML5 canvas的特性以及如何使用它来实现此类动画...

    HTML5 canvas太阳系八大行星运行轨道图.zip

    在这个“HTML5 canvas太阳系八大行星运行轨道图”实例中,我们看到的是利用canvas元素来模拟太阳系中八大行星的运行轨道,并且通过鼠标悬停功能,用户可以查看每个行星的名称,这为学习和展示天文学知识提供了一个...

    HTML5 Canvas液态粒子汇聚文字动画特效源码.zip

    总的来说,“HTML5 Canvas液态粒子汇聚文字动画特效源码”是一个展示Canvas API强大功能的实例,它涉及到粒子系统、动画控制、图形绘制和性能优化等多个方面。通过学习和分析这个源码,开发者不仅可以提升自己的...

Global site tag (gtag.js) - Google Analytics