评论

如何实现加入购物车的抛物线效果

如何实现加入购物车的抛物线效果

一、场景分析

在一些如商城、点餐小程序中实现购物车抛物线效果可以提升界面趣味性增加小程序用户体验。

二、效果预览

效果图压缩后速度有点快,请下载代码片段预览

三、实现原理

当用户点击物品时记录当前触摸点,根据触摸点计算抛物线运动的顶点位置,通过触摸点、顶点、购物车的位置计算出抛物线运动轨迹,然后控制 icon 运动。

  • 计算购物车在当前手机内的位置
/** 设置购物车的坐标位置 **/
wx.getSystemInfo({
   success: (res) => {
     let busPos = {}
     // x y 坐标分别取屏幕百分之八十的位置
     busPos['x'] = res.windowWidth * 0.8
     busPos['y'] = res.windowHeight * 0.8
     this.setData({
       busPos
     })
   }
 }) 
  • 商品点击事件的处理
    点击物品后记录点击的位置,然后根据点击位置计算出抛物线的顶点位置,计算方式为点击位置的上方+150,右边+150(需要根据点击位置是否在购物左边还是右边进行判断)。

  • 根据点击,顶点,购物车三个位置计算出抛物线运动轨迹

  1. 以3个控制点为例,点A、B、C、AB 上设置点 D、BC 上设置点 E、DE 连线上设置点 F,则最终的贝塞尔曲线是点F的坐标轨迹;
  2. 计算相邻控制点间距;
  3. 根据完成时间,计算每次执行时 D 在AB方向上移动的距离,E 在 BC 方向上移动的距离;
  4. 时间每递增 100ms,则 D、E 在指定方向上发生位移,F 在 DE 上的位移则可通过 AD/AB = DF/DE 得出;
  5. 根据 DE 的正余弦值和 DE 的值计算出F的坐标。
  • 开启定时器,依次按照贝塞尔曲线位置做动画位移
    使用定时器将抛物线运动轨迹做动画位移。

  • 定时器执行完动画后将购物车角标+1

  • 老规矩,结尾放代码片段
    https://developers.weixin.qq.com/s/PnYfitmG7Hxv

最后一次编辑于  2022-03-04  
点赞 19
收藏
评论

11 个评论

  • 茜茜又困了🐽
    茜茜又困了🐽
    2022-05-25

    看了大佬的代码 体验了效果后 如图2 一点小小的建议

    源代码中如果用户在抛物线动画未结束时 点击另一件商品 currentImg会被替换

    2022-05-25
    赞同 2
    回复 1
    • TNT
      TNT
      2023-01-13
      收到~
      2023-01-13
      1
      回复
  • 快乐家族
    快乐家族
    2022-10-28

    作者绝对是个技术派,点个赞。我刚来,感觉看你们的文章跟天书样,想努力但是找不到方向。。

    2022-10-28
    赞同 1
    回复
  • weir威尔
    weir威尔
    05-20

    购物车是 tabBar 怎么处理?

    05-20
    赞同
    回复
  • 。。
    。。
    03-28

    不知道为啥有点些许卡顿



    03-28
    赞同
    回复
  • 鲨鱼辣椒
    鲨鱼辣椒
    01-17

    楼主,我的购物车是在左边,如何进行优化啊

    01-17
    赞同
    回复
  • Jason
    Jason
    2023-06-29

    我的购物车在左侧,如何设置添加购物车效果往左侧抛物线跌落?

    2023-06-29
    赞同
    回复 1
    • 鲨鱼辣椒
      鲨鱼辣椒
      01-17
      您好,你的解决了吗,能不能分享一下
      01-17
      回复
  • 🇪 🇱 🇸 🇪
    🇪 🇱 🇸 🇪
    2023-06-08

    666

    2023-06-08
    赞同
    回复
  • Blank
    Blank
    2023-02-22

    大哥,我购物车在右边,计算出来的效果不太好看,

    2023-02-22
    赞同
    回复
  • 波波船长
    波波船长
    2023-01-13

    很不错,来学习学习。这里好像有点问题,能优化下就更好啦

    2023-01-13
    赞同
    回复 3
    • TNT
      TNT
      2023-01-13
      可以详细描述下问题嘛?
      2023-01-13
      回复
    • gzh
      gzh
      2023-03-22回复TNT
      就是点击红框区,动画有问题
      2023-03-22
      回复
    • ABC
      ABC
      11-05回复gzh
      解决了吗,顶点设置的问题,改一下我红色画出来的地方,去掉绝对值
      11-05
      回复
  • 你説.
    你説.
    2022-12-15

    大佬 求看看我发表的那个帖子 能帮忙看看有什么好方法吗

    2022-12-15
    赞同
    回复

正在加载...

登录 后发表内容