微信小程序 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 相关文章推荐
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
jquery cookie的用法总结
Nov 18 Javascript
深入理解jquery跨域请求方法
May 18 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
JS实现给对象动态添加属性的方法
Jan 05 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
浅谈Vuex的状态管理(全家桶)
Nov 04 Javascript
vue使用vuex实现首页导航切换不同路由的方法
May 08 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
浅谈小程序globalData的那些事儿
Nov 01 Javascript
详解vue 组件
Jun 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项目应该注意的几点事项分享
2013/12/20 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
js查错流程归纳
2012/05/04 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
python3 判断列表是一个空列表的方法
2018/05/04 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
python 构造三维全零数组的方法
2018/11/12 Python
Python中按键来获取指定的值
2019/03/02 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
工厂实习感言
2014/01/14 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
python图片灰度化处理的几种方法
2021/06/23 Python
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS