微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。小程序是一种不用下载就能使用的应用,也是一项门槛非常高的创新,经过将近两年的发展,已经构造了新的小程序开发环境和开发者生态。
在实际的移动应用程序交互方式中,最常见的就是滑动操作。像左右滑动切换页面,手指张开来放大图片等,都是由滑动操作来完成的。
微信小程序默认提供的相关事件如下:
触摸相关操作事件
tap对应点击操作,还提供了longtap来支持长按操作,这些都比较简单,就不多做讲述。
touchmove对应滑动操作,通过bindtouchmove
即可响应滑动操作。
//wxml
<view id="id" bindtouchmove="handletouchmove" style = "width : 100px; height : 100px; background : #167567;">
</view>
//js
Page({
handletouchmove: function(event) {
console.log(event)
},
})
通过监听滑动事件,可以实现一些实用的功能,比如用过iphone的用户都知道assistivetouch,一个桌面上的快捷按钮,可以将按钮拖动到桌面的任意位置。为了方便,这里就用一个圆形来代表该按钮。
//wxml
<view id="id" class = "ball" bindtouchmove="handletouchmove" style = "width : 60px; height : 60px; background : #545345;">
</view>
//wxss
.ball {
box-shadow:2px 2px 10px #AAA;
border-radius: 20px;
position: absolute;
}
//js
Page({
handletouchmove: function(event) {
console.log(event)
},
})
视图跟随
好吧,按钮丑了点,这不是重点。拖拽操作的实现思路也很简单,当触发滑动事件时,event对象会包含当前触摸位置的坐标信息,可以通过event.touches[0].pageX
和event.touches[0].pageY
来获取,为什么touches是数组呢,答案是为了支持多点触控(在电脑上不知道如何模拟多点触控)。接下来将按钮的位置设置为触摸位置,应该就能实现预期效果了,让我们试试看。
在Page中定义按钮的位置数据ballBottom和ballRight,并绑定到view的对应属性中。
//wxml
<view id="id" class = "ball" bindtouchmove="handletouchmove" style = "width : 60px; height : 60px; background : #545345; top:{{ballTop}}px; left: {{ballLeft}}px">
</view>
//js
Page({
data: {
ballTop: 0,
ballLeft: 0,
},
handletouchmove: function(event) {
console.log(event)
},
})接下来在handletouchmove
方法中更新按钮的位置数据
handletouchmove: function(event) {
console.log(event)
this.setData ({
ballTop: event.touches[0].pageY,
ballLeft: event.touches[0].pageX,
});
},运行发现基本可以实现效果,不过有两个问题,一是会将按钮拖出屏幕边缘,二是按钮始终在鼠标右下方。
接下来加入对屏幕边界的判断并对按钮位置进行修正。其中屏幕大小可以通过wx.getSystemInfo
来获取。
完整代码如下:
Page({
data: {
ballTop: 0,
ballLeft: 0,
screenHeight:0,
screenWidth:0
},
onLoad: function () {
//获取屏幕宽高
var _this = this;
wx.getSystemInfo({
success: function (res) {
_this.setData({
screenHeight: res.windowHeight,
screenWidth: res.windowWidth,
});
}
});
},
handletouchmove: function(event) {
console.log(event)
let pageX = event.touches[0].pageX;
let pageY = event.touches[0].pageY;
//屏幕边界判断
if (pageX < 30 关键词:小程序开发之基础篇滑动设置(10)