微信小程序 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 Map 和 List 的简单实现代码
Jul 08 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
分享我对JS插件开发的一些感想和心得
Feb 04 Javascript
将鼠标焦点定位到文本框最后(代码分享)
Jan 11 Javascript
微信小程序实战之自定义模态弹窗(8)
Apr 18 Javascript
使用JavaScript实现链表的数据结构的代码
Aug 02 Javascript
JS实现前端缓存的方法
Sep 21 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
Nov 08 Javascript
如何使用puppet替换文件中的string
Dec 06 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 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注销代码(session注销)
2012/05/31 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
JS基础之undefined与null的区别分析
2011/08/08 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
基于python实现雪花算法过程详解
2019/11/16 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
舞蹈比赛获奖感言
2014/02/04 职场文书
自我推荐信范文
2014/05/09 职场文书
委托书怎么写
2014/07/31 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
考研导师推荐信范文
2015/03/27 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers