canvas与CreateJS实现图片动画

简介: canvas与CreateJS实现图片动画

一、使用cavas实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="margin: 20px">
<canvas id="canvas" width="700" height="400" style="border:black solid 1px"></canvas>
</body>
<script>
    var c = document.getElementById("canvas");
    var ctx = c.getContext("2d");
    var butterfly = new Image();
    butterfly.src = "../img/butterfly.png";
    butterfly.onload = drawButterflies;
 
    function drawButterflies() {
        ctx.drawImage(butterfly, 0, 0, 204, 149, 0, 0, 204, 149)
        ctx.drawImage(butterfly, 0, 0, 204, 149, 200, 0, 204, 149)
        ctx.drawImage(butterfly, 0, 0, 204, 149, 400, 0, 204, 149)
        //1s后,重绘图片
        setTimeout(moveButterfly, 1000);
    }
 
    function moveButterfly() {
        //清空获取
        ctx.clearRect(0, 0, c.width, c.height);
        ctx.drawImage(butterfly, 0, 0, 204, 149, 0, 0, 204, 149)
        ctx.drawImage(butterfly, 0, 0, 204, 149, 200, 200, 204, 149)
        ctx.drawImage(butterfly, 0, 0, 204, 149, 400, 0, 204, 149)
    }
</script>
</html>

二、使用CreateJS实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/easeljs.min.js"></script>
</head>
<body style="margin: 20px" onload="init()">
<canvas id="canvas" width="700" height="400" style="border:black solid 1px"></canvas>
</body>
<script>
<!--    定义舞台-->
   var stage;
   function init(){
       //初始化舞台
       stage=new createjs.Stage(document.getElementById('canvas'));
       //绑定tick事件
       createjs.Ticker.addEventListener("tick",handleTick);
       //设置更新
       createjs.Ticker.setFPS(60);
       start();
   }
  function handleTick(e){
       stage.update();
  }
  function start(){
       drawButterflies();
  }
   var butterfly2;
   function drawButterflies(){
       //获取图片路径
       var imgPath='../img/butterfly.png';
       //读取图片
       var butterfly1 = new createjs.Bitmap(imgPath);
       butterfly2 = new createjs.Bitmap(imgPath);
       var butterfly3 = new createjs.Bitmap(imgPath);
       butterfly2.x=200;
       butterfly3.x=400;
       //设置舞台元素
       stage.addChild(butterfly1,butterfly2,butterfly3);
       //更新舞台
       stage.update();
       //延时更新位置
       setTimeout(moveButterfly,1000);
  }
  function  moveButterfly(){
      butterfly2.y+=200;
  }
</script>
</html>

https://code.createjs.com/1.0.0/createjs.min.js

三、CreateJS元素交换位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/easeljs.min.js"></script>
</head>
<body style="margin: 20px" onload="init()">
<canvas id="canvas" width="700" height="400" style="border:black solid 1px"></canvas>
</body>
<script>
    <!--    定义舞台-->
    var stage;
 
    function init() {
        //初始化舞台
        stage = new createjs.Stage(document.getElementById('canvas'));
        //绑定tick事件
        createjs.Ticker.addEventListener("tick", handleTick);
        //设置更新
        createjs.Ticker.setFPS(60);
        start();
    }
 
    function handleTick(e) {
        stage.update();
    }
 
    function start() {
        drawButterflies();
    }
 
    var butterfly1
    var butterfly2;
 
    function drawButterflies() {
        //获取图片路径
        var imgPath = '../img/butterfly.png';
        //读取图片
        butterfly1 = new createjs.Bitmap(imgPath);
        butterfly2 = new createjs.Bitmap(imgPath);
 
        butterfly2.x = 90;
        butterfly2.y = 40;
        //设置舞台元素
        stage.addChild(butterfly2, butterfly1);
        //更新舞台
        stage.update();
        //延时更新位置
        setTimeout(swapButterfies, 1000);
    }
 
    function swapButterfies() {
        //元素更换位置
        stage.swapChildren(butterfly1,butterfly2)
    }
</script>
</html>


相关文章
|
监控 安全 数据可视化
【教程】为什么要为 App 应用加固 ?如何为 App 应用加固 ?
【教程】为什么要为 App 应用加固 ?如何为 App 应用加固 ?
|
移动开发 前端开发 Android开发
前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
2806 0
|
Web App开发 开发框架 前端开发
移动端window.open跳转链接时,iOS没有反应的问题
【10月更文挑战第9天】在移动端使用 `window.open` 跳转链接时,iOS 可能无响应,原因是 iOS 的安全策略和弹出窗口阻止功能。解决方法包括:确保在用户交互后触发 `window.open`,将目标设置为 `_self`,使用锚点链接模拟跳转,或利用专门的移动端框架。需综合考虑这些方案以优化用户体验。
2053 61
|
10月前
html5+svg太空人404动画模板源码
html5+svg太空人404动画模板源码
142 17
|
前端开发 JavaScript API
如何使用 Canvas 实现复杂的动画效果?
【10月更文挑战第24天】使用Canvas实现复杂的动画效果,需要综合运用JavaScript、数学知识以及对Canvas API的深入理解。
580 63
|
开发工具 git 开发者
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
2776 0
|
前端开发 JavaScript API
前端开发的秘密武器:这些工具让你轻松应对各种复杂动画效果!
【10月更文挑战第30天】前端开发中,动画效果为页面增添了无限生机。CSS3的@keyframes规则和JavaScript动画库如GSAP、Anime.js等,使开发者能轻松实现从简单到复杂的动画效果。掌握动画原理和设计原则,结合工具和库,可以创造出既美观又实用的动画,提升用户体验。
231 4
|
存储
base64图片是什么?原理是什么?优缺点是什么?
base64图片是什么?原理是什么?优缺点是什么?
819 0
|
JavaScript 前端开发
使用 WebGL 创建 3D 动画
【10月更文挑战第3天】使用 WebGL 创建 3D 动画
|
缓存 iOS开发
如何在Xcode删除某个版本的IOS模拟器
如何在Xcode删除某个版本的IOS模拟器
1428 1