// 需要加入动画的页面js

data:{

// add goods animate

needAni: false,

hide_good_box: true,

hideCount: true,

// add goods animate

},

onLoad: function(options) {

wx.setNavigationBarTitle({title: '商城'});

// shopping car function

var that = this;

this.busPos = {};

this.busPos['x'] = app.globalData.ww * 0.8;

this.busPos['y'] = app.globalData.hh * 0.8;

// shopping car function

},

touchOnGoods: function (e) {

let that = this;

let imgSrc = e.currentTarget.dataset.imgsrc;

this.openAlert();

this.setData({

goodsitemimg: imgSrc,

goodsProtype_this: that,

goodsProtype_e: e,

})

console.log(imgSrc);

// this.touchGoods(that,e)

},

// shopping animate

touchGoods:function(that,e){

// 如果good_box正在运动

if (!that.data.hide_good_box) return;

that.finger = {};

var topPoint = {};

that.finger['x'] = e.touches["0"].clientX - 80;

that.finger['y'] = e.touches["0"].clientY - 120;

if (that.finger['y'] < that.busPos['y']) {

topPoint['y'] = that.finger['y'] - 150;

} else {

topPoint['y'] = that.busPos['y'] - 150;

}

topPoint['x'] = Math.abs(that.finger['x'] - that.busPos['x']) / 2 + that.finger['x'];

that.linePos = app.bezier([that.finger, topPoint, that.busPos], 30);

that.startAnimation();

},

// shopping animate

startAnimation: function () {

var index = 0,

that = this,

bezier_points = that.linePos['bezier_points'];

this.setData({

hide_good_box: false,

bus_x: that.finger['x'],

bus_y: that.finger['y']

})

this.timer = setInterval(function () {

index++;

that.setData({

bus_x: bezier_points[index]['x'],

bus_y: bezier_points[index]['y']

})

if (index >= 28) {

clearInterval(that.timer);

that.setData({

hide_good_box: true,

hideCount: false,

count: that.data.count += 1

})

}

}, 33);

},

// 需要加入动画的页面js

wxml部分

// app.js中以备重复调用

screenSize: function () {

var that = this;

wx.getSystemInfo({

success: function (res) {

var ww = res.windowWidth;

var hh = res.windowHeight;

that.globalData.ww = ww;

that.globalData.hh = hh;

}

})

},

bezier: function (points, times) { // shopping car Bezier curve center portion calculation method

var bezier_points = [];

var points_D = [];

var points_E = [];

const DIST_AB = Math.sqrt(Math.pow(points[1]['x'] - points[0]['x'], 2) + Math.pow(points[1]['y'] - points[0]['y'], 2));

const DIST_BC = Math.sqrt(Math.pow(points[2]['x'] - points[1]['x'], 2) + Math.pow(points[2]['y'] - points[1]['y'], 2));

const EACH_MOVE_AD = DIST_AB / times;

const EACH_MOVE_BE = DIST_BC / times;

const TAN_AB = (points[1]['y'] - points[0]['y']) / (points[1]['x'] - points[0]['x']);

const TAN_BC = (points[2]['y'] - points[1]['y']) / (points[2]['x'] - points[1]['x']);

const RADIUS_AB = Math.atan(TAN_AB);

const RADIUS_BC = Math.atan(TAN_BC);

for (var i = 1; i <= times; i++) {

var dist_AD = EACH_MOVE_AD * i;

var dist_BE = EACH_MOVE_BE * i;

var point_D = {};

point_D['x'] = dist_AD * Math.cos(RADIUS_AB) + points[0]['x'];

point_D['y'] = dist_AD * Math.sin(RADIUS_AB) + points[0]['y'];

points_D.push(point_D);

var point_E = {};

point_E['x'] = dist_BE * Math.cos(RADIUS_BC) + points[1]['x'];

point_E['y'] = dist_BE * Math.sin(RADIUS_BC) + points[1]['y'];

points_E.push(point_E);

var tan_DE = (point_E['y'] - point_D['y']) / (point_E['x'] - point_D['x']);

var radius_DE = Math.atan(tan_DE);

var dist_DE = Math.sqrt(Math.pow((point_E['x'] - point_D['x']), 2) + Math.pow((point_E['y'] - point_D['y']), 2));

var dist_DF = (dist_AD / DIST_AB) * dist_DE;

var point_F = {};

point_F['x'] = dist_DF * Math.cos(radius_DE) + point_D['x'];

point_F['y'] = dist_DF * Math.sin(radius_DE) + point_D['y'];

bezier_points.push(point_F);

}

return {

'bezier_points': bezier_points

};

},

android 飞入购物车效果,大佬留步,小程序中如何实现购物车商品曲线飞入效果(类似饿了么)...相关推荐

  1. php实现秒杀倒计时,小程序中实现电商秒杀倒计时的效果

    在电商应用中,经常会用到秒杀,那么秒杀会有个倒计时功能,这里我们把上次给大家展示的倒计时功能用到电商应用中去. 基本实现功能 1,小程序仿电商网站秒杀倒计时 2,显示格式为:例如 1天11时11分11 ...

  2. 小程序中公告消息左右滚动跑马灯效果

    wxml如下: < view class= 'scroll_view_border'> < view class= "srcoll_view" bindtap= ...

  3. android商品数量加减,微信小程序实现一个简单的商品数量加减案例

    简介 这是一个用微信小程序原生代码实现的数量加减demo,主要是用于商品购物车或者商品详情修改数量使用,很简单哦~~~. 核心js方法说明addCount(增加数量) delCount (减少数量) ...

  4. 微信小程序中实现一个金额摇奖效果

    有时小程序没有现成插件可用,本文结合一个数字滚动摇奖效果,谈谈微信小程序中一些动画实现的方式. 实例上要显示四位数字,根据后台返回金额,比如5.2元,处理成从00:00快速翻动到05:20的效果,处理 ...

  5. 在微信小程序中编写金额摇奖效果

    有时小程序没有现成插件可用,本文结合一个数字滚动摇奖效果,谈谈微信小程序中一些动画实现的方式. 实例上要显示四位数字,根据后台返回金额,比如5.2元,处理成从00:00快速翻动到05:20的效果,处理 ...

  6. 微信小程序 | canvas为你的天气预报添加雨雪效果

    在 Canvas 开发中,经常会提到粒子系统,使用粒子系统可以模拟出火.雾.云.雪等抽象视觉效果.它是HTML5新增的为页面添加多样化效果的绝佳实践. 正巧最近做的一个天气类微信小程序紧接尾声,寻思着 ...

  7. 【微信小程序控制硬件⑦ 进阶篇】巧借阿里云物联网平台的免费连接,从微信小程序颜色采集控制 esp8266 输出七彩灯效果,中秋节来个直播如何?!

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  8. 微信小程序实战篇:实现抖音评论效果

    IT实战联盟博客:http://blog.100boot.cn 我们在写小程序的时候经常会遇到弹出层的效果而现有官网提供的跳转方法多数是不支持参数传递的.本文教大家做一个抖音评论效果的小程序 首先看下 ...

  9. 微信小程序仿系统自带下拉刷新效果

    微信小程序仿系统自带下拉刷新效果 前言 思路分析 实现 尾巴 前言 看到标题也许有人会说:系统不是已经自带了下拉刷新,你去仿照系统的下拉刷新是不是吃多了没事干?其实真相并不是这样的.在微信小程序手把手 ...

最新文章

  1. 示波器上mode选择开关上的norm和auto是什么意思?
  2. 深入解析Dropout——基本思想:以概率P舍弃部分神经元,其它神经元以概率q=1-p被保留,舍去的神经元的输出都被设置为零...
  3. LeetCode Increasing Triplet Subsequence(动态规划)
  4. windows 2012 r2 x64 安装IIS注意事项
  5. 自动驾驶前沿综述:基于深度强化学习的自动驾驶算法
  6. 浅析phpwind9.0之登陆机制
  7. native react 折线图_react native中使用echarts
  8. zabbix 监控配置1
  9. $lookup做关联表查询
  10. 云计算学习资料分享:type查看命令
  11. STM32工作笔记004---了解高速版PCB设计Cadence
  12. javascript 中的深复制 和 其实现方法
  13. Golang go 命令
  14. Java 原生数据类型、Integer
  15. matlab怎么画矩形世界地图,matlab绘制世界地图
  16. 2021-08-06MATLAB深度学习简单应用
  17. CSDN 写作小技巧(2)—— 如何在 CSDN 博客的文章开篇创建目录?
  18. firefox改html内容,可以firefox扩展修改HTML文档的DOM然后保存为HTML吗?
  19. matlab 绘图 模板,【科研绘图】MATLAB可视化代码模板
  20. python推荐系统实战_Python项目实战!分析9000部电影,打造一个简单的电影推荐系统...

热门文章

  1. 肯德基中国在上海第500家门店开业
  2. c语言给数组赋值的3种形式
  3. JavaScript的异步处理
  4. mmall后台品类模块
  5. Linux下安装Yearning及相关环境配置
  6. Windows系统下,OpenSSL升级为1.1.1t
  7. matlab中的pci1716DIO模块,PCI-67396 96 通道高驱动 DIO 卡
  8. 阿里财报:阿里云首次盈利,最大的压力是监管
  9. 微信音频接口调用demo
  10. 合伙人项目模式,抢占市场先机,三年上市