微信小程序 animation API详解及实例代码


Posted in Javascript onOctober 08, 2016

动画水还是比较深的,这里只是简单介绍下小程序中动画的一些属性和注意事项,做动画前一定要整理好思路将动画一步步分解,再进行组合!这里只做引入。

wx.createAnimation(object)

看官方介绍

1.创建一个动画实例animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。

2.调用动画操作方法后要调用 step() 来表示一组动画完成,可以在一组动画中调用任意多个动画方法,一组动画中的所有动画会同时开始,一组动画完成后才会进行下一组动画。step 可以传入一个跟 wx.createAnimation() 一样的配置参数用于指定当前组动画的属性

这还是比较好理解的比如第一条对应代码animation: this.animation.export()
第二条比如缩放动画,也就说是一组scale,scaleX, scaleY…为一缩放动画组的一个动画方法,缩放动画组和旋转动画组通过step()链接,按顺序执行。代码中体验吧!看效果反过来看会更容易理解

主要属性:

微信小程序 animation API详解及实例代码

这里主要树下timingFunction和transformOrigin

timingFunction 设置动画效果

  1. linear 默认为linear 动画一直较为均匀
  2. ease 开始时缓慢中间加速到快结束时减速
  3. ease-in 开始的时候缓慢
  4. ease-in-out 开始和结束时减速
  5. ease-out 结束时减速
  6. step-start 动画一开始就跳到 100% 直到动画持续时间结束 一闪而过
  7. step-end 保持 0% 的样式直到动画持续时间结束 一闪而过

transformOrigin 设置动画的基点 默认%50 %50 0

left,center right是水平方向取值,对应的百分值为left=0%;center=50%;right=100%

top center bottom是垂直方向的取值,其中top=0%;center=50%;bottom=100%

动画组及动画方法

样式:

微信小程序 animation API详解及实例代码

旋转:

微信小程序 animation API详解及实例代码

缩放:

微信小程序 animation API详解及实例代码

偏移:

微信小程序 animation API详解及实例代码

倾斜:

微信小程序 animation API详解及实例代码

矩阵变形:

微信小程序 animation API详解及实例代码

演示单个动画组效果

微信小程序 animation API详解及实例代码

wxml

<view class="container">
 <view animation="{{animation}}" class="view">我在做动画</view>
</view>
<button type="primary" bindtap="rotate">旋转</button>

js

Page({
 data:{
  text:"Page animation",
  animation: ''
 },
 onLoad:function(options){
  // 页面初始化 options为页面跳转所带来的参数
 },
 onReady:function(){
  // 页面渲染完成
  //实例化一个动画
  this.animation = wx.createAnimation({
   // 动画持续时间,单位ms,默认值 400
   duration: 1000, 
   /**
    * http://cubic-bezier.com/#0,0,.58,1 
    * linear 动画一直较为均匀
    * ease  从匀速到加速在到匀速
    * ease-in 缓慢到匀速
    * ease-in-out 从缓慢到匀速再到缓慢
    * 
    * http://www.tuicool.com/articles/neqMVr
    * step-start 动画一开始就跳到 100% 直到动画持续时间结束 一闪而过
    * step-end  保持 0% 的样式直到动画持续时间结束    一闪而过
    */
   timingFunction: 'linear',
   // 延迟多长时间开始
   delay: 100,
   /**
    * 以什么为基点做动画 效果自己演示
    * left,center right是水平方向取值,对应的百分值为left=0%;center=50%;right=100%
    * top center bottom是垂直方向的取值,其中top=0%;center=50%;bottom=100%
    */
   transformOrigin: 'left top 0',
   success: function(res) {
    console.log(res)
   }
  })
 },

 /**
  * 旋转
  */
 rotate: function() {
  //顺时针旋转10度
  //
  this.animation.rotate(150).step()
  this.setData({
   //输出动画
   animation: this.animation.export()
  })
 },

 onShow:function(){
  // 页面显示
 },
 onHide:function(){
  // 页面隐藏
 },
 onUnload:function(){
  // 页面关闭
 }
})

演示多个动画组效果

微信小程序 animation API详解及实例代码

这里我们只需要更改以下代码即可

  /**
   * 旋转
   */
  rotate: function() {
    //两个动画组 一定要以step()结尾
    /**
     * 动画顺序 顺时针旋转150度>x,y 放大二倍>x,y平移10px>x,y顺时针倾斜>改变样式和设置宽度宽度
     */
    this.animation.rotate(150).step().scale(2).step().translate(10).step().skew(10).step().opacity(0.5).width(10).step({ducation: 8000})
    this.setData({
      //输出动画
      animation: this.animation.export()
    })
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
js检测客户端不是firefox则提示下载
Apr 07 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
May 26 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
Oct 01 Javascript
JavaScript 和 Java 的区别浅析
Jul 31 Javascript
javascript实现des解密加密全过程
Apr 03 Javascript
javascript二维数组转置实例
Jan 22 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
Jun 20 Javascript
深入理解vue Render函数
Jul 19 Javascript
微信小程序模板(template)使用详解
Jan 31 Javascript
ionic2中使用自动生成器的方法
Mar 04 Javascript
javascript实现异形滚动轮播
Nov 28 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 #Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 #Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 #Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 #Javascript
Javascript单例模式的介绍和实例
Oct 08 #Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 #Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 #Javascript
You might like
PHP一些有意思的小区别
2006/12/06 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
详解Python中的条件判断语句
2015/05/14 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python如何生成树形图案
2018/01/03 Python
Python多继承原理与用法示例
2018/08/23 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
Django中的用户身份验证示例详解
2019/08/07 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
判断单链表中是否存在环
2012/07/16 面试题
国际贸易专业个人鉴定
2014/02/22 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
和睦家庭事迹
2014/05/14 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
世界十大狙击步枪排行榜
2022/03/20 杂记