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>


相关文章
|
存储 安全 算法
对象存储服务-Minio
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
1815 1
|
移动开发 前端开发 Android开发
前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
前端html input =“file“ ios/安卓解决无法选择图库/拍照问题
2994 0
|
6月前
|
存储 算法 Java
深入理解 PHP 的 `unset()`:你真的释放内存了吗?
深入理解 PHP 的 `unset()`:你真的释放内存了吗?
493 83
|
10月前
|
传感器 监控 安全
物业如何使用消防安全管理系统实现数字化转型
监管越来越严,人手越来越少,传统办法走不通了,数字化转型就成了必经之路。草料二维码这种轻量化的方案,不仅仅是工具,更像是个“贴心帮手”,帮物业从“被动应付检查”变成“主动管好安全”
177 18
物业如何使用消防安全管理系统实现数字化转型
|
前端开发 JavaScript API
如何使用 Canvas 实现复杂的动画效果?
【10月更文挑战第24天】使用Canvas实现复杂的动画效果,需要综合运用JavaScript、数学知识以及对Canvas API的深入理解。
642 63
html5+svg太空人404动画模板源码
html5+svg太空人404动画模板源码
197 17
|
机器学习/深度学习 自然语言处理
“大模型+强化学习”最新综述!港中文深圳130余篇论文:详解四条主流技术路线
【4月更文挑战第17天】香港中文大学(深圳)研究团队发表综述论文,探讨大型语言模型(LLMs)与强化学习(RL)结合的四条技术路线:信息处理器、奖励设计者、决策制定者和生成器。LLMs提升RL在多任务学习和样本效率,但处理复杂环境时仍有挑战。它们能设计奖励函数,但预训练知识限制在专业任务中的应用。作为决策者和生成器,LLMs提高样本效率和行为解释,但计算开销是问题。
1016 1
“大模型+强化学习”最新综述!港中文深圳130余篇论文:详解四条主流技术路线
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
域名解析 网络协议 安全
【域名解析DNS专栏】DNS-over-TLS与DNS-over-HTTPS:安全升级新标准
【5月更文挑战第26天】随着网络技术的发展,DNS协议面临安全挑战,DNS-over-TLS (DoT) 和 DNS-over-HTTPS (DoH) 作为解决方案出现,旨在通过加密增强隐私和安全。DoT使用TLS封装DNS查询,防止流量被窥探或篡改;DoH则利用HTTPS隐藏DNS查询。实施DoT需在客户端和服务器间建立TLS连接,DoH需DNS服务器支持HTTPS接口。这两种技术为网络安全提供支持,未来有望更广泛部署,提升网络环境的安全性。
1932 0
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
1589 1