HTML5用canvas怎么实现动画效果

 我来答
育知同创教育
2016-06-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

HTML5用canvas实现动画效果的方法:

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

    <script>

      window.requestAnimFrame = (function(callback) {

        return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||

        function(callback) {

          window.setTimeout(callback, 1000 / 60);

        };

      })();


      function drawRectangle(myRectangle, context) {

        context.beginPath();

        context.rect(myRectangle.x, myRectangle.y, myRectangle.width, myRectangle.height);

        context.fillStyle = '#8ED6FF';

        context.fill();

        context.lineWidth = myRectangle.borderWidth;

        context.strokeStyle = 'black';

        context.stroke();

      }

      function animate(myRectangle, canvas, context, startTime) {

        // update

        var time = (new Date()).getTime() - startTime;


        var linearSpeed = 100;

        // pixels / second

        var newX = linearSpeed * time / 1000;


        if(newX < canvas.width - myRectangle.width - myRectangle.borderWidth / 2) {

          myRectangle.x = newX;

        }


        // clear

        context.clearRect(0, 0, canvas.width, canvas.height);


        drawRectangle(myRectangle, context);


        // request new frame

        requestAnimFrame(function() {

          animate(myRectangle, canvas, context, startTime);

        });

      }

      var canvas = document.getElementById('myCanvas');

      var context = canvas.getContext('2d');


      var myRectangle = {

        x: 0,

        y: 75,

        width: 100,

        height: 50,

        borderWidth: 5

      };

      drawRectangle(myRectangle, context);

      // wait one second before starting animation

      setTimeout(function() {

        var startTime = (new Date()).getTime();

        animate(myRectangle, canvas, context, startTime);

      }, 1000);

    </script>

  </body>

实现效果:

百度网友c45032d
推荐于2017-11-22 · TA获得超过3387个赞
知道大有可为答主
回答量:2201
采纳率:12%
帮助的人:913万
展开全部
canvas画图,canvas对象为var c=document.getElementById("myCanvas");其应有js属性方法如下列举:
1:绘制渲染对象,c.getContext("2d"),获取2d绘图对象,无论我们调用多少次获取的对象都将是相同的对象。
2:绘制方法:
clecrRect(left,top,width,height)清除制定矩形区域,
fillRect(left,top,width,height)绘制矩形,并以fillStyle填充。
fillText(text,x,y)绘制文字;
strokeRect(left,top,width,height)绘制矩形,以strokeStyle绘制边界。
beginPath():开启路径的绘制,重置path为初始状态;
closePath():绘制路径path结束,它会绘制一个闭合的区间,添加一条起始位置到当前坐标的闭合曲线;
moveTo(x,y):设置绘图其实坐标。
lineTo(x,y);绘制从当前其实位置到x,y直线。
fill(),stroke(),clip():在完成绘制的最后的填充和边界轮廓,剪辑区域。
arc():绘制弧,圆心位置、起始弧度、终止弧度来指定圆弧的位置和大小;
rect():矩形路径;
drawImage(Imag img):绘制图片;
quadraticCurveTo():二次样条曲线路径,参数两个控制点;
bezierCurveTo():贝塞尔曲线,参数三个控制点;
createImageData,getImageData,putImageData:为Canvas中像素数据。ImageData为记录width、height、和数据 data,其中data为我们色素的记录为
argb,所以数组大小长度为width*height*4,顺序分别为rgba。getImageData为获取矩形区域像素,而putImageData则为设置矩形区域像素;
… and so on!
3:坐标变换:
translate(x,y):平移变换,原点移动到坐标(x,y);
rotate(a):旋转变换,旋转a度角;
scale(x,y):伸缩变换;
save(),restore():提供和一个堆栈,保存和恢复绘图状态,save将当前绘图状态压入堆栈,restore出栈,恢复绘图状态;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式