Canvas 图片制作动画

news/2024/11/9 1:00:02/

Canvas入门文档推荐

菜鸟教程
W3cschool

这个是 做的其中一个动画,只是html案例,后来做了十个添加到项目里面了,另外实现了暂停、继续、背景音乐同步播放/同步暂停、最后还将动画转成了视频并合成了音乐实现上传下载;
(rg:下面的是es5语法,再严格模式下不能使用,需要稍微改造下)

<!DOCTYPE html>
<html><head><title>老程-Canvas-旋转过渡</title><style type="text/css">.out-div {text-align: center;padding-top: 30px;}canvas {border: 1px solid black;}</style>
</head><body><div class="out-div"><canvas id="player" width="400" height="400">Your browser does not support the HTML5 canvas tag.</canvas></div><script>//图片数组var imgList = ["https://img.alicdn.com/bao/uploaded/i2/813529278/O1CN01Civq0P2IPNCmhRuKS_!!0-item_pic.jpg","https://img.alicdn.com/bao/uploaded/i2/813529278/O1CN01iCxNOs2IPNCn4jyLf_!!0-item_pic.jpg","https://img.alicdn.com/bao/uploaded/i4/813529278/O1CN01WvBYgD2IPNCqyAEWE_!!0-item_pic.jpg","https://img.alicdn.com/bao/uploaded/i4/813529278/O1CN019jRGzx2IPNCqPBmjA_!!0-item_pic.jpg"];//特效分析,动画分两段// 1、前一张图片放大// 2、第二张图片旋转放大进场(逆时针)function rotate() {var canvas = document.getElementById('player');ctx = canvas.getContext('2d');var width = canvas.width,height = canvas.height;var moveY = 1;function animation(img1, img2, callback) { //外方法moveY = -moveYvar enlarge = 1.0;(function () { //内方法let h1 = img1.heightlet w1 = img1.widthlet h2 = img2.heightlet w2 = img2.widthif (enlarge >= 1.1) { //第二部分动作:第二张图片进场 (从上往下/从下往上)var rotate = 0;var dot = {x: 100,y: 100};var elg = 0.5;(function () {if (rotate >= 360 -14.4) {return callback(); //回调外方法}rotate += 3.6*4;dot.x -= 4;dot.y -= 4;elg += 0.02;ctx.clearRect(0, 0, width, height);ctx.drawImage(img1, 0, 0, w1, h1, 0, 0, width, height);ctx.save()let dotTemp={x:dot.x+width * elg/2,y:dot.y+height * elg/2}ctx.translate(dotTemp.x, dotTemp.y);ctx.rotate(rotate * Math.PI / 180);ctx.translate(-dotTemp.x, -dotTemp.y);ctx.drawImage(img2, 0, 0, w2, h2, dot.x, dot.y, width * elg, height * elg)ctx.restore()setTimeout(arguments.callee, 40); //回调内方法})();} else { //第一部分动作:前一张图片放大ctx.save();ctx.scale(enlarge, enlarge);enlarge += 0.002ctx.drawImage(img1, 0, 0, w1, h1, -width * (enlarge - 1) / 2, -height * (enlarge - 1) / 2,width, height);ctx.restore();setTimeout(arguments.callee, 40); //回调内方法}})();}var i = 0;(function () {animation(imgList[i], imgList[i += 1] || imgList[i = 0], arguments.callee);})();}//--------------------------------------------------------------------------------------------------------------------------------------------var imgLoaded = 0;var onload = function () { //加载网络图片imgLoaded++;if (imgLoaded == imgList.length) {rotate(); //全部加载完成调用动画};}for (var i = imgList.length; i--;) {var img = new Image(); // 创建一个<img>元素img.addEventListener('load', onload)img.src = imgList[i]; // 设置图片源地址imgList[i] = img; //加载完成后数组直接存图片对象}</script>
</body></html>

这个动画的效果如下
在这里插入图片描述
项目功能思路整理


http://www.ppmy.cn/news/172042.html

相关文章

使用ivx制作进场动画的经验总结

在案例制作中为了让展示效果更加精致&#xff0c;可能用到一些进场的小动效。今天使用时间轴和轨迹做了3个小样例给大家作为一个参考。轨迹在之前的帖子里已经讲过了&#xff0c;时间轴可能还比较陌生&#xff0c;可以把它理解为一个对轨迹进行管理的组件。因为有时案例中会有很…

X3D制作简易三维动画

第一次接触X3D&#xff0c;想留下一些自己的学习想法。 首先&#xff0c;直接百度X3D&#xff0c;会发现除了官网文档&#xff0c;其他的资料很少&#xff0c;官网文档全英文&#xff0c;看完它提供的例子后&#xff0c;知道X3D是一个HTML5框架&#xff0c;可以直接在项目文件…

三维动画设计与制作【2】

1.以下属于Max5中正交视图类型的有&#xff08;&#xff09;。 A.Camera B.Back C.Bottom D.Perspective 2.点的属性有&#xff08;&#xff09;。 A.Smooth B.Corner C.BezierCorner D.Bezier 3.以下属于3dsmax5中常用贴图类型的是&#xff08;&#xff09;。 A.Checker …

PYMOL | 制作动画

1. 方法一&#xff1a;纯命令行 1.命令窗口输入mset 1 x30&#xff0c;定义一个30帧的动画&#xff1b;2.输入frame 1定义第一帧&#xff1b;3.调整分子到一个合适的观察角度&#xff1b;4.输入mview store 存储该观察视角为第一帧;5.输入frame 30 定义第30帧;6.调整观察角度到…

AE制作Json动画教程

本文将从为什么要做动画&#xff0c;到动画实现方式&#xff0c;再到用AEBodymovin制作动画&#xff0c;结合实际案例行分享&#xff0c;希望给新手带来一些启发。 首先我们来聊聊&#xff0c;我们为什么要做动效&#xff1f; 1、突出产品某项功能 在APP中&#xff0c;我们经…

【3dsmax】动画的基本制作

在《【Unity3D】3D模型的使用——FBX的使用与Animation设置》&#xff08;点击打开链接&#xff09;我曾经介绍过Unity3D中动画的使用&#xff0c;其实一些简单的3D动画&#xff0c;我们自己通过3dsmax也能制作出来&#xff0c;下面通过制作一个简单的立方体动画来说明这个问题…

动画制作如何实现?看过来 | 万彩动画大师

飞碟说的专题视频曝光量巨大&#xff0c;并能通过广告植入等方式将流量转化为收益&#xff0c;可谓业界标杆。怎么做出飞碟说那类的MG动画&#xff1f;现在就为你揭秘飞碟说动画制作教程&#xff01; 1.确定脚本 何为脚本&#xff1f;所谓脚本就是视频的框架。脚本把控着整个作…

动漫制作技巧如何制作动漫视频

动漫制作技巧是很多新人想了解的问题&#xff0c;今天小编就来解答与大家分享一下动漫制作流程&#xff0c;为了帮助有兴趣的同学理解&#xff0c;大多数人会选择动漫培训机构&#xff0c;那么今天小编就带大家来看看动漫制作要掌握哪些技巧&#xff1f; 一、动漫作品首先完成…