`
wjlgryx
  • 浏览: 310220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

html5 实现动画(三)

阅读更多
<canvas id="canvas3" width="250" height="300" style="background-color:black">
    你的浏览器不支持 &lt;canvas&gt;标签,请使用 Chrome 浏览器 或者 FireFox 浏览器
</canvas><br/>
帧数:<input  id="txt4" type="text" value="10"/><br/>
速度:<input type="text" id="txt5" value="5"/><br/>
比例:<input type="text" id="txt6" value="2"/><br/>
<input type="button" value="开始" onclick="animate()"/>
<input type="button" value="暂停" onclick="stop()"/>
<script type="text/javascript">
    //定时器
    var interval=null;
    //停止动画
    function stop(){
        clearInterval(interval);
    }
    //===================================================================
    //精灵登场
    //====================================================================
    //每一帧在大图中的位置
    var frames=[];
    frames[0]=[0,4,19,19];
    frames[1]=[22,1,24,19];
    frames[2]=[49,0,18,17];
    frames[3]=[1,32,18,17];
    frames[4]=[22,33,24,19];
    frames[5]=[49,36,19,19];
    //精灵类
    function Sprite(dx,dy,delta,fps){
        this.dx=dx;
        this.dy=dy;
        this.fps=fps;
        this.delay=1000/fps;
        this.last_update=0;
        //移动速度
        this.delta=-delta;
        //帧编号
        this.index=0;
        //方向
        this.dir_left=true;
    }
    Sprite.prototype.update=function(canvas){
        //获取当前时间
        var now=(new Date()).getTime();
        if((now-this.last_update)>this.delay){
            if(this.dir_left){
                //方向朝左,只绘制0 1 2帧
                if(this.index>2)
                    this.index=0;
            }
            else{
                //方向朝右,只绘制 3 4 5 帧
                if(this.index>5)
                    this.index=3;
            }
            //取出当前帧的坐标
            this.frame=frames[this.index];
            //当前帧在大图中的位置
            this.sx=this.frame[0];
            this.sy=this.frame[1];
            this.sw=this.frame[2];
            this.sh=this.frame[3];
            //当前帧大小
            this.dw=this.frame[2];
            this.dh=this.frame[3];
            //改变 x 坐标
            this.dx=this.dx+this.delta;
            //左边缘检测
            if(this.dx<0){
                this.dx=0;
                //转向
                this.delta=-this.delta;
                this.dir_left=false;
                this.index=3;
            }
            //右边缘检测
            if((this.dx+this.dw)>canvas.getAttribute("width")){
                this.dx=canvas.getAttribute("width")-this.dw;
                //转向
                this.delta=-this.delta;
                this.dir_left=true;
                this.index=0;
            }
            this.dy=this.dy;//y 不移动
            this.index++;
            this.last_update=now;
        }
    }
    function animate(){
        //停止动画
        stop();
        //移动速度
        var delta=parseInt(document.getElementById('txt4').value);
        //每秒绘制多少次
        var fps=parseInt(document.getElementById('txt5').value);
        //比例
        var scale=parseInt(document.getElementById('txt6').value);
        //画布对象
        var canvas=document.getElementById("canvas3")
        //获取上下文对象
        var ctx = canvas.getContext("2d");
        //清空画布
        ctx.clearRect(0,0,canvas.getAttribute("width"),canvas.getAttribute("height"));
        var img=new Image();
        img.src="http://www.crazyfrom.com/images/2010/10/sprite.gif";
        var sprite=new Sprite(120,150,delta,fps);
        interval = setInterval(function(){
            //清空画布
            ctx.clearRect(0,0,canvas.getAttribute("width"),canvas.getAttribute("height"));
            //更新数据
            sprite.update(canvas);
            //保存状态
            ctx.save();
            //移动坐标
            ctx.translate(sprite.dx,sprite.dy);
            ctx.scale(scale,scale);
            ctx.drawImage(img,sprite.sx,sprite.sy,sprite.sw,sprite.sh,0,0,sprite.dw,sprite.dh);
            //恢复状态
            ctx.restore();
        },1);
    }
</script>
分享到:
评论
1 楼 BIOHAZARDX 2011-11-03  
下载学习,初学者膜拜一下。

相关推荐

    HTML5过场动画切换

    三、HTML5过场动画实现 1. 使用CSS3过渡(Transitions):通过设置`transition`属性,元素可以在两个样式之间平滑过渡,常用于简单的过场效果。 2. CSS3动画(Animations):更复杂的效果可以通过`@keyframes`创建...

    html5 实现动画(一)

    这篇博客“HTML5实现动画(一)”可能详细介绍了如何利用HTML5的特性来创建动态效果。我们将围绕HTML5动画的核心技术进行深入探讨。 首先,HTML5引入了`&lt;canvas&gt;`元素,这是一个画布,允许开发者通过JavaScript进行...

    html5实现的动画小人

    这个“html5实现的动画小人”很可能是一个利用HTML5的Canvas元素和JavaScript来创建的动态图形实例。Canvas是HTML5提供的一种绘图API,允许开发者在网页上进行像素级别的图像处理。 在HTML5的Canvas中,动画的实现...

    HTML5实现的超酷3D实景地图动画特效源码

    在这个“HTML5实现的超酷3D实景地图动画特效源码”中,我们可以深入探讨HTML5如何与3D技术结合,创造出生动逼真的地图体验。 首先,HTML5的Canvas元素是实现3D效果的关键。Canvas是一个二维绘图接口,通过...

    唯美表白动画代码jQuery跟Html5实现

    在前端Web开发领域,"唯美表白动画代码jQuery跟Html5实现"是一个有趣且富有创意的项目,它结合了现代Web技术的力量,为用户提供了一个浪漫的情人节表白平台。这个项目的核心在于利用jQuery库和HTML5的新特性来创建...

    html5字符动画

    HTML5字符动画是一种利用HTML5的新...通过上述技术,"我的字符串动画多标签160811-1"这个项目很可能是实现了一个具备多种特效、可自定义行进出场动画的HTML5字符动画实例,为用户提供了一种新颖且有趣的文字展示方式。

    HTML5 +JS实现的动画

    在“HTML5 + JS实现的动画”这个主题中,我们将深入探讨如何利用这两种技术来创建引人入胜的动画效果。 HTML5是超文本标记语言的最新版本,它引入了许多新的元素和API,旨在提升网页的语义性、可访问性和功能。其中...

    html5实现的页面滚动图片动画加载特效源码.zip

    接下来,CSS3(层叠样式表第三版)与HTML5结合,提供了丰富的动画和过渡效果。例如,`@keyframes`规则可以定义一个动画的过程,从起始状态到结束状态的逐步变化。在页面滚动时,可以应用这些动画使图片淡入、淡出、...

    HTML5 Canvas 源码实现雷达扫描动画特效

    基于HTML5 Canvas实现的雷达扫描动画特效源码,可以在canvas上绘制任意元素,包括3D元素。这款雷达扫描动画就是利用了canvas的灵活特性在canvas上绘制这些美丽的扫描线条,用户可以根据自己的喜好绘制出新的类似雷达...

    html5-实现canvas宇宙黑洞炫酷粒子动画特效.rar

    html5-实现canvas宇宙黑洞炫酷粒子动画特效.rar html5-实现canvas宇宙黑洞炫酷粒子动画特效.rar html5-实现canvas宇宙黑洞炫酷粒子动画特效.rar html5-实现canvas宇宙黑洞炫酷粒子动画特效.rar html5-实现canvas宇宙...

    html5 canvas小人跳舞动画特效

    这个"html5 canvas小人跳舞动画特效"是一个利用Canvas API实现的交互式动画示例,它展示了如何通过编程方式创建动态、生动的视觉效果。 在Canvas中,我们可以使用`canvas.getContext('2d')`获取2D渲染上下文,然后...

    html实现花瓣下落动画

    html实现花瓣下落动画

    HTML5实现五彩烟花动画特效,canvas炫彩烟火,高质量js源代码!

    HTML5实现五彩烟花动画特效,canvas炫彩烟火,高质量js源代码! HTML5实现五彩烟花动画特效,canvas炫彩烟火,高质量js源代码! HTML5实现五彩烟花动画特效,canvas炫彩烟火,高质量js源代码! HTML5实现五彩烟花...

    HTML5实现动画效果的方式汇总

    Canvas是HTML5中的一个画布元素,通过JavaScript来绘制图形并实现动画。在提供的代码示例中,创建了一个canvas元素,并通过JavaScript获取其上下文对象(c),然后定义了一系列变量,如dx、carAlpha、carX等,用于...

    基于HTML的定格动画的实现

    通过阅读源代码,我们可以学习如何将这三个部分结合,创建一个完整的定格动画。 5. **优化与性能** 当处理大量图片时,要注意优化性能。可以使用懒加载技术,只在需要时加载图片,减少初始加载时间。另外,通过...

    jQuery Html5实现唯美表白动画代码.zip

    `jQuery+Html5实现唯美表白动画代码`可能是一个包含具体实现的JavaScript文件,而`js`目录可能包含了其他的辅助脚本或库。 为了实现这样一个表白动画,你需要按照以下步骤进行: 1. 创建HTML结构,添加必要的元素...

    HTML5线条声波波纹动画特效.zip

    HTML5线条声波波纹动画特效是一个利用现代Web技术实现的动态视觉效果,它结合了HTML、CSS和JavaScript的力量,为网页添加了引人注目的交互性元素。在这个压缩包中,主要包含了一个名为"jiaoben8767"的文件,这可能是...

    html5全屏滚动实例 完美实现全屏滚动带动画

    CSS3的过渡效果是实现动画的关键。通过设置`transition`属性,可以在属性值改变时平滑地过渡到新状态。例如,可以定义`transition: all 0.5s ease;`来使元素在0.5秒内平滑地完成所有属性的变化,`ease`是缓动函数,...

    酷炫 html5页面加载 loading动画效果 demo 基于原生无第三方依赖

    本示例"酷炫html5页面加载loading动画效果demo"是基于原生JavaScript和CSS实现的,无需任何第三方库,简化了开发流程,提高了性能。 首先,我们来详细了解一下如何实现这种加载动画。在HTML结构中,我们需要在`...

Global site tag (gtag.js) - Google Analytics