微信小程序:Animation实现图片旋转动画

最近小程序中有一个图片旋转的需求,最初是想着通过切换多张图片达到旋转的效果,后来发现微信小程序带有动画api,然后就改由image+Animation来实现。

首先在wxml中定义image

 


  1. <image class=”bth_image2″ mode=”aspectFit” animation=”{{animation}}” src=’../../images/***.png’></image>

注意其中的animation属性,image就由它来实现动画。

而{{animation}}我们在js的data中定义

 


  1. data: {
  2. animation: ”
  3. },

相关代码

 


  1. var _animation;
  2. var _animationIndex
  3. const _ANIMATION_TIME = 500;
  4. pages {
  5. onShow: function () {
  6. _animation = wx.createAnimation({
  7. duration: _ANIMATION_TIME,
  8. timingFunction: ‘linear’, // “linear”,”ease”,”ease-in”,”ease-in-out”,”ease-out”,”step-start”,”step-end”
  9. delay: 0,
  10. transformOrigin: ‘50% 50% 0’
  11. })
  12. },
  13.  
  14. /**
  15. * 实现image旋转动画,每次旋转 120*n度
  16. */
  17. rotateAni: function (n) {
  18. _animation.rotate(120 * (n)).step()
  19. this.setData({
  20. animation: _animation.export()
  21. })
  22. },
  23.  
  24. /**
  25. * 开始旋转
  26. */
  27. startAnimationInterval: function () {
  28. var that = this;
  29. that.rotateAni(++_loadImagePathIndex); // 进行一次旋转
  30. _animationIntervalId = setInterval(function () {
  31. that.rotateAni(++_loadImagePathIndex);
  32. }, _ANIMATION_TIME); // 没间隔_ANIMATION_TIME进行一次旋转
  33. },
  34.  
  35. /**
  36. * 停止旋转
  37. */
  38. stopAnimationInterval: function () {
  39. if (_animationIntervalId> 0) {
  40. clearInterval(_animationIntervalId);
  41. _animationIntervalId = 0;
  42. }
  43. },
  44. }

微信自带的Animation可以实现一次动画,然后可以通过setInterval来达到不断旋转的目的,在使用时,控制startAnimationInterval和stopAnimationInterval即可。

 

注意:

这里为什么不直接给_animation.rotate(120 * (n)).step()设置一个足够大的值,原因有两点:

 


  1. 1、我们需要便利的控制开始和停止,
  2. 2、animation在小程序进入后台后,会持续运行,占用手机内存和cpu,而小程序依赖于微信,在iphone上会导致微信被终止运行

在使用animation时,会发现有时候出现旋转速度很快或者反向旋转再正向旋转的清空,这都是由于rotate的值设置有问题。

 


  1. 1、rotate的值应该是上一次结束时的值,
  2. 2、如果设置了全局变量,记得在oncreate时初始化,不然第二次打开同一页面会有问题。
  3.  

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

【小程序源码网资源版权风险说明】:
本站为避免不必要的纷争,分享的所有资源中一切可能有版权风险的资源将全部转载自第三方网站或平台,站长只为大家提供相关资源的介绍和跳转引导。 因可能有疏忽大意,所以如有遗漏资源侵犯了您的合法权利,请联系站长删除。
【小程序源码网资源下载使用说明】:
本站所分享的一切QQ小程序源码,thinkphp整站源码,微信小程序源码,图文教程等资源仅供用户学习参考使用,任何人不得作其他用途,违者自行承担所有责任。
【小程序源码网毫无人看的介绍】:
本站又称Z站,原名贼娘网,开站于2018年,换过三任站长,目前站长是第四任站长,本站是一个主要分享免费开源小程序源码/网站源码/免费素材/教程资源的网站,主要小程序资源有用于学习的小程序源码,也有正版原创可商用的小程序源码,是一个公益博客型网站。
【小程序源码网原创源码版权申明】:
未经小程序源码网许可,任何人不得擅自使用本站原创首发源码进行商业行为(除本站VIP用户在期限内,版权无使用限制),否则将依法承担相应赔偿责任。
【小程序源码网转载文章版权申明】:
本站所转载的QQ小程序或微信小程序源码与其他资源仅供学习,任何人不得作其他用途,违者自行承担所有责任。
【小程序源码网站长最后的屁话】:
如有您认为本站有任何侵犯您合法权益的文章,或者您有什么疑问需求,欢迎联系站长QQ,站长24小时在线,备注公司名称和源码版权问题或者需要小程序定制开发等站长业务类型可急速处理,如果您只是交流小程序的一些开发问题或源码问题可以加入QQ群讨论,就不用加站长啦,对于白嫖党,QQ群才是处理问题的天堂,当然站长也欢迎大家骚扰~
小程序源码网 » 微信小程序:Animation实现图片旋转动画
嘿,投喂下嘛!