热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运用SVG来制造Morphing动画结果

作甚Morphing动画最先之前,先来相识下什么是Morphing动画。所谓Morphing动画是示意,同一个模子,从一个外形变到另一个外形。以下图所示,从外形1渐变到外形2,再从

作甚Morphing动画

最先之前,先来相识下什么是Morphing动画。所谓Morphing动画是示意,同一个模子,从一个外形变到另一个外形。以下图所示,从外形1渐变到外形2,再从外形2渐变到外形3,末了从外形3渐变到外形1,以此轮回往复。

《运用 SVG 来制造 Morphing 动画结果》

从上图能够看到像如许的Morphing动画简直是为SVG量身定制的,因为SVG中的途径底本就是由许多的坐标点组成的(点连成线),做一些外形变化只需挪动坐标点就能够了。

简朴的来讲,在SVG要完成Morphing动画,主假如靠挪动外形途径上的坐标点从而到达从一个外形变到另一个外形的动画结果。而且因为这个外形是从一个外形变化而来,所以途径上的坐标数目要完全相同,差别的只是坐标的位置差别罢了。

怎样制造Morphing动画

要制造Morphing动画,起首得用矢量编辑软件比方Adobe Illustrator或者是Inscape来设想好相干的外形并获得相干途径(path)的数据信息。

比方,假如你要做以下图所示的两个外形之间变化的Morphing动画,就须要在设想软件中先设想好两个外形。固然这里要注意一点的事是,两个图形的坐标数目要一样,只是位置差别罢了。相识
Adobe Illustrator的应该会邃晓,平常在设想好基础的外形的时刻,运用贝赛尔曲线东西,能够做许多的变化,从而运用一个基础的外形能够做出差别外形的变化。

《运用 SVG 来制造 Morphing 动画结果》

实战Morphing动画

下面我们来小小的演习一下,完成上图中的结果。

起首在设想软件中,这里运用的是Adobe Illustrator来设想一个基础的外形,以下图所示:

《运用 SVG 来制造 Morphing 动画结果》

然后复制一份新建一个文档,在它基础上运用贝赛尔曲线东西,轻微对几个坐标点做下变化获得下面的图形:

《运用 SVG 来制造 Morphing 动画结果》

这就获得了两个矢量图形,然后离别导出SVG花样,获得Path的信息:

path1

path2

获得path信息以后,接下来就是来完成动画结果来。

这里我们须要借助于一个小小的轻量级的js动画库anime,这个库异常的小,而且没有任何的依靠,才几百行。是一款功能强大的Javascript动画库插件。anime.js能够和CSS3属性,SVG,DOM元素和JS对象一同事情,制造出种种高性能,腻滑过渡的动画结果。

细致的运用要领就不细致引见,能够去官网看相干实例。

下面就针对SVG来引见下运用anime来完成Morphing动画。依据Morphing动画道理,我们现在是要完成从path1外形腻滑的过分到path2的动画结果。

anime api

猎取目的元素

anime中要来编写动画结果,起首是挑选你要活动的元素,这里运用浏览器默许的要领来获得目的元素:

挑选器示例
DOM元素document.getElementsByTagName(“path”)[0]]

参数

这里简朴引见下,我们将要运用的一些参数

名字默许值范例
delay(动画耽误)0数字
duration(动画运转时候)1000数字
autoplay(是不是自动最先)ture布尔值
easing(缓动曲线)easeOutElastic运用console log anime.easings能够输出它支撑的一些欢动曲线要领
loop(是不是轮回播放)false布尔值或者是细致的整数

细致到我们这个结果,实在我们要转变的就是SVG中Path途径的值,运用anime连系上面引见的要领能够很轻松的来完成这个结果,以下代码所示:

anime({
targets: [document.getElementsByTagName("path")[0]],
d: "M140,51.75A51.75,51.75,0,0,0,99.2,35.27a83,83,0,1,0,65.13,65.67A51.76,51.76,0,0,0,140,51.75Z",
duration: 1000,
loop: true,
direction: "alternate",
easing: "linear"
});

上面的代码中,d就是我们要转变的属性的值。这里注意下duration这个参数,它是用来指定动画运转的方向的,主假如三个值normalreversealternate,这里挑选是alternate即动画动画轮番反向播放。

OK,就这么简朴我们就完成了一个简朴Morphing动画。充分发挥你的想象力,我们能够完成更风趣的Morphing动画。

《运用 SVG 来制造 Morphing 动画结果》

近来做了一个关于SVG的运用的手艺分享网站svgtrick.com,会同步一些文章到这里来,更多的关于SVG方面的手艺知识能够去网站看看。


推荐阅读
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
author-avatar
帕格迪奥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有