问题

最近, 想做个小程序的圆盘抽奖出来, 想要实现的效果是点击一次就旋转一次. 不过每次只有第一次点击有效, 再次点击就没有任何动画效果. 代码如下

rotate: function() {// 创建一个动画实例var animation = wx.createAnimation({duration: 1000,timingFunction: 'ease'})// 动画效果为旋转 360 度animation.rotate(360).step()// 将动画实例数据传给组件的animation属性this.setData({animationData: animation.export()})
}

产生原因

通过断点调试, 发现这个函数是正常执行的. 后来查阅了资料, 发现小程序判断是否要有动画效果是看当前状态和要执行的实例数据间是否有差值.

打个比方: 小明站在起跑线上(初始状态), 第一次让体育老师( 动画实例 ) 让他走到离起跑线十米远( 实例数据 ) 的地方. 第二次体育老师又让小米走到离起跑线十米远的地方, 小明看了看脚下, 发现自己现在就在十米远的地方, 于是他决定不走了.

我之前的代码就是这种情况, 从第二次点击开始, 前后数据没有改变, 所以就不会有动画效果. 既然问题找到了, 接下来就是思考怎么解决了.

解决方法

我一开始想到了两种方法, 一种是让小明重新回到起跑线上, 另外一种是让小明在第一次的基础上, 再走多十米. 因为我要做的是抽奖, 第一种方式会更方便我计算. 所以我改进了一下代码. 代码如下

rotate:function() {// 创建动画实例var animation = wx.createAnimation({duration: 1000,timingFunction: 'ease'})// 动画效果为旋转 360 度 animation.rotate(360).step()// 将动画实例数据传给组件的animation属性this.setData({animationData: animation.export()})// 回到初始状态setTimeout(function() {// 逆时针旋转至0度animation.rotate(0 ).step()this.setData({animationData: animation.export()})}.bind(this), 1300);}

效果图

现在的效果每次顺时针旋转360度, 然后再逆时针旋转360度回到初始状态

改进

在后面的具体实现中, 我觉得每次回到初始状态的时间太久, 我想将这个时间缩短, 思考一会, 决定添加多一个 动画实例

rotate:function() {// 顺时针旋转实例var animation = wx.createAnimation({duration: 1000,timingFunction: 'ease'})// 逆时针旋转实例var animation1 = wx.createAnimation({duration: 10,timingFunction: 'ease'})animation.rotate(450 ).step()this.setData({animationData: animation.export()})setTimeout(function() {animation1.rotate(0 ).step()this.setData({animationData: animation1.export()})}.bind(this), 1300);}


楼主也是菜鸡前端一个, 如果文章中有错误的地方, 欢迎各位大佬指出 .

小程序动画加载只执行一次的问题相关推荐

  1. 微信小程序列表加载动画示例

    微信小程序列表加载动画 微信小程序列表加载动画示例 实现思路 什么是动画? 导航栏设置 列表动画加载 完整代码demo 微信小程序列表加载动画示例 初学微信小程序开发,记录一下.网上找了很久这种效果, ...

  2. 程序的加载和执行(六)——《x86汇编语言:从实模式到保护模式》读书笔记26

    程序的加载和执行(六)--<x86汇编语言:从实模式到保护模式>读书笔记26 通过本文能学到什么? NASM的条件汇编 用NASM编译的时候,通过命令行选项定义宏 Makefile的条件语 ...

  3. 程序的加载和执行(三)——《x86汇编语言:从实模式到保护模式》读书笔记23

    程序的加载和执行(三)--读书笔记23 接着上次的内容说. 关于过程load_relocate_program的讲解还没有完,还差创建栈段描述符和重定位符号表. 1.分配栈空间与创建栈段描述符 462 ...

  4. 程序的加载和执行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25

    程序的加载和执行(五)--<x86汇编语言:从实模式到保护模式>读书笔记25 前面几篇博文终于把代码分析完了.这篇就来说说代码的编译.运行和调试. 1.代码的编译及写入镜像文件 之前我们都 ...

  5. 程序的加载和执行(一)——《x86汇编语言:从实模式到保护模式》读书笔记21

    程序的加载和执行(一) 本文及之后的几篇博文是原书第13章的学习笔记. 本章主要是学习一个例子,对应的代码分为3个文件: ;代码清单13-1;文件名:c13_mbr.asm;文件说明:硬盘主引导扇区代 ...

  6. html 执行外部js的函数,javascript – Chrome扩展程序:加载并执行外部脚本

    我无法在我的chrome扩展程序中加载和执行外部js-script.看起来和 this question一样,但我仍然无法弄清楚为什么它在我的情况下不起作用. 我的想法是,我希望在我的内容脚本中有一些 ...

  7. 初级前端小程序项目加载速度优化

    这份文字是根据近期团队做来问丁香医生 SPA 和 丁香医生小程序 加载速度优化的经历整理而成. 效果 古人有一句话叫做:治感冒看疗效.既然是关于速度优化的,我们就先来看一下优化的效果. 来问丁香医生 ...

  8. miniui datagrid 隐藏列默认赋值_「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)...

    小程序如何加载的呢?生命周期!源码:https://github.com/limingios/wxProgram.git 中的No.3 加载页面 小程序默认加载的pages中的第一个目录 不管你的名称 ...

  9. 程序的加载和执行(四)——《x86汇编语言:从实模式到保护模式》读书笔记24

    程序的加载和执行(四)--<x86汇编语言:从实模式到保护模式>读书笔记24 通过本文能学到什么? 怎样跳转到用户程序 用户程序通过调用内核过程完成自己的功能 怎样从用户程序返回到内核 接 ...

最新文章

  1. 面板服务器默认是什么系统,免费Linux服务器管理面板,你用的是哪个?
  2. AI闯入法律界,第一步是当律师的得力助手
  3. 2021年春季学期-信号与系统-第五次作业参考答案-第三小题
  4. halcon车牌识别完整源码_基于chineseocr_lite的身份证、火车票、车牌等中文OCR文字识别...
  5. 网站如何接入支付宝(转)
  6. 机器学习之手把手实现,第 2 部分 频繁项集与关联规则 FP-growth 的原理和实现...
  7. C语言 —— 贪吃蛇
  8. 手机芯片三国杀:高通、联发科、展讯都想成霸主
  9. ios 横向滚轮效果_ios横向菜单+页面滑动
  10. 最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...
  11. FastDFS学习笔记
  12. 又是绩效考核时,KPI 和 OKR 到底怎么考?
  13. 5.CND技术详解---全局负载均衡工作原理及实现
  14. Atitit 文档全文索引的索引种类 用于文本数据挖掘 搜索 数据分析 目录 1.1. Txt摘要索引。。 1 1.2. File placeholder 索引 1 1.3. Lucence索引 1
  15. 新概念51单片机c语言教程doc,新概念51单片机C语言教程实例代码.doc
  16. [GIS教程] 6.1空间数据采集与处理具体步骤
  17. STM32开发日记002:KEIL5安装教程
  18. 英语听说计算机查分,2018中考第二次英语听说考明日查分,附查分常见问答
  19. 计算机组成原理实验报告 算术逻辑单元ALU实验(源代码全)
  20. android手机安装carplay,安卓系统适用carplay经验分享

热门文章

  1. freemarker 循环map里面的对象形式List
  2. 荣誉 | 旷视再次入选《麻省理工科技评论》50家聪明公司​
  3. 解决:华为Mate20 从拍照进入图片浏览模式怎么返回拍照 ?【华为脑残的设计师啊!】
  4. [渝粤教育] 山东科技大学 遥感数字图像处理 参考 资料
  5. 计算机音乐一决高下,节奏大师详细讲解 用音乐来一决高下吧!
  6. boost 时间和日期
  7. PCL学习笔记——合并点云
  8. 如何摆脱成为一个油腻的中年人
  9. web-UI是什么;UI与WUI的区别
  10. Labview的国产测试工具神器ATECLOUD智能云测试平台技术特点