JS抛物线动画操作实例分享

在做无人便利小程序的项目中,某一天产品说要像某产商产品学习,给添加购物车增加抛物线小球动画。本文主要给大家详细分析了js抛物线动画制作过程以及相关的代码实例分享,有兴趣的朋友参考下。

先给大家看下效果图

JS抛物线动画操作实例分享

分析

这种不固定起始位置的动画,自然不能用 gif 图,所以只能用原生代码实现

那我们有什么工具来实现动画呢?

小程序提供了 JS API createAnimation 来创建动画

CSS animation

工具有了,我们再看一下什么是抛物线。

这里我们只讨论水平抛物线,水平抛物线从数学原理上来说就是【水平匀速、垂直加速的运动】,转换成代码层面就是在动画效果 timingFunction 中,水平动画采用 linear ,垂直动画采用 ease-in

所以我们需要把这个抛物线动画分解成 两个 同时 进行但 不同动画效果 的动画。

实现

小程序的实现

JS:

cartAnimation(x, y) { // x y 为手指点击的坐标,即球的起始坐标  let self = this,    cartY = app.globalData.winHeight - 50, // 结束位置(购物车图片)纵坐标    cartX = 50, // 结束位置(购物车图片)的横坐标    animationX = flyX(cartX, x), // 创建球的横向动画    animationY = flyY(cartY, y), // 创建球的纵向动画    this.setData({      ballX: x,      ballY: y,      showBall: true    })  setTimeoutES6(100).then(() => { // 100 秒延时,确保球已经到位并显示    self.setData({      animationX: animationX.export(),      animationY: animationY.export(),    })    return setTimeoutES6(400) // 400 是球的抛物线动画时长  }).then(() => { // 400 秒延时后隐藏球    this.setData({      showBall: false,    })  })}function setTimeoutES6(sec) { // Promise 化 setTimeout  return new Promise((resolve, reject) => {    setTimeout(() => {resolve()}, sec)  })}function flyX(cartX, oriX) { // 水平动画  let animation = wx.createAnimation({    duration: 400,    timingFunction: 'linear',  })  animation.left(cartX).step()  return animation}function flyY(cartY, oriY) { // 垂直动画  let animation = wx.createAnimation({    duration: 400,    timingFunction: 'ease-in',  })  animation.top(cartY).step()  return animation}

登录后复制

HTML:

  

登录后复制

据我所知,用 transform: transtate() 来实现的动画会比 top & left 性能更优,但尝试下来发现并不能做到理想的交互效果,期待后续继续研究吧

H5 的实现

// todo

登录后复制

相关推荐:

基于jquery fly插件实现加入购物车抛物线动画效果_jquery

以上就是JS抛物线动画操作实例分享的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2785910.html

(0)
上一篇 2025年3月8日 17:37:26
下一篇 2025年3月8日 17:37:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS如何解决一些简单计算题

    js的功能是很强大的,本文主要和大家分享js如何解决一些简单计算题的方法,希望能帮助到大家。 我们先来看下运行后的效果: 接下来我们分享给大家全部代码: nbsp;html>              document     /*计…

    2025年3月8日
    200
  • js动态创建标签并设置属性的方法

    当我们在写jsp页面时,往往会遇到这种情况:从后台获取的数据个数不确定,此时在前端写jsp页面时也就不确定怎么设计了。这个时候就需要通过js动态创建标签: 1.创建某个标签:如下在body中创建一个p的事例; function fun(){…

    编程技术 2025年3月8日
    200
  • JS实现随机数代码分享

    本文主要和大家分享js实现随机数代码分享,在制作网页或者小程序的时候经常用到随机数,作者整理了一个很简单的js生成随机数的程序,希望本文能帮助到大家。 我们先来看下本次源码的效果图 大家可以灵活运用,我们把具体JS代码分享给大家: nbsp…

    2025年3月8日
    200
  • JS中常用消息框

    本文主要和大家分享js中常用消息框,希望能帮助到大家。 首先来看下运行效果 加下来分享一下全部代码: nbsp;html>        Document    function warn_info(){ alert(“提示消息框”)…

    2025年3月8日
    200
  • JS实现页面颜色改变代码

    本文将和大家js的一个网页制作小技巧,应用在很多地方,通过js改变html页面的颜色,有兴趣的学习下,希望能帮助到大家。 我们先来看下具体的演示效果图 以下就是完整的HTML页面代码,大家可以测试下。 nbsp;html>      …

    2025年3月8日
    200
  • javaScript动态添加Li元素

    本文主要为大家分享一篇javascript动态添加li元素的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 html代码块 **javaScript动态添加Li元素** ul li{list-sty…

    编程技术 2025年3月8日
    200
  • node.js中fs文件操作方法

    本文主要给大家详细分析了node.js中fs文件系统目录操作与文件信息操作的方法以及代码详解,需要的读者可以参考下。希望能帮助到大家。 目录操作 如果存在该目录,就创建失败 同步创建目录fs.mkdirSync(path, [mode]) …

    编程技术 2025年3月8日
    200
  • JS正则表达式如何替换url参数

    本文主要和大家介绍了js正则表达式替换url的参数的方法及js使用正则表达式从url中获取参数值的代码,需要的朋友可以参考下,希望能帮助到大家。 具体代码如下所示: /* 定义替换对象键值 */var setReferArgs = func…

    编程技术 2025年3月8日
    200
  • Vuejs搜索匹配功能实例详解

    本文主要和大家分享Vuejs搜索匹配功能实例,最近一直在看vue,查了很多资料,看了很多文档和博客,大概半知半解了,然后利用所理解的知识写了一个简单的搜索匹配功能。  大概长这个样子: nbsp;html>Vue测试2*{paddin…

    编程技术 2025年3月8日
    200
  • JS原型详解说明

    本文主要和大家分享JS原型详解说明,原型的5个规则,希望本文能帮助到大家。 所有的引用类型(数组,对象,函数),都具有对象特性,即可自由扩展属性(除了“null”) var obj ={};obj.a=100//100var arr=[];…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论