wepy是开发微信小程序的一个框架
wepy特点:
支持组件化开发
风格借鉴了vue, 易上手
腾讯官方开源维护 https://tencent.github.io/wepy/
应用是最好的学习方式, 这次用wepy做一个简易签名板
源码
<style lang="less">
canvas { margin: 20px auto; border: 2px solid #A84631; width: 300px; height: 200px; border-radius: 20px;
} .info { text-align: center;
} image{ border: 1px solid #A84631; width: 60px; height: 40px; margin : 5px; border-radius: 5px;
} button { width: 40%; float: left; margin: 5%;
}</style><template>
<view>
<canvas canvas-id="myCanvas"
disable-scroll=true
bindtouchstart="start"
bindtouchmove="move"
bindtouchend="end"/>
<view class="info">
鼠标当前位置: ({{x}}, {{y}}) </view>
<block>
<button bindtap="exportImage" type="primary">存图</button>
</block>
<block>
<button bindtap="clearNow" type="warn">清空</button>
</block>
<block wx:for="{{filePathList}}">
<image src="{{item}}"/>
</block>
</view></template><script>
import wepy from 'wepy'var ctx = wx.createCanvasContext('myCanvas')export default class Fyxz extends wepy.page {
data = { x: 0, y: 0, ctx: ctx, filePath: '', filePathList: []
}
methods = { start: (e) => { this.x = e.touches[0].x this.y = e.touches[0].y
}, move: (e) => { this.ctx.moveTo(this.x, this.y) this.x = e.touches[0].x this.y = e.touches[0].y this.ctx.lineTo(this.x, this.y) this.ctx.stroke() this.ctx.draw(true)
}, end: (e) => {
}, savaImageToDevice: (filePath) => {
wx.saveImageToPhotosAlbum({
success(res) {
}
})
}, exportImage: () => {
wx.canvasToTempFilePath({ x: 0, y: 0, width: 300, height: 200, destWidth: 300, destHeight: 200, canvasId: 'myCanvas', success: (res) => { let p = new Promise((resolve, reject) => { let fp = res.tempFilePath
resolve(fp)
})
p.then((fp) => { console.log('++++>', fp) this.filePath = fp // 将照片保存到缓存
this.methods.savaImageToDevice(fp) // 将缓存路径保存到列表
this.filePathList.push(fp) // 手动更新数据
this.$apply()
}).then(() => { // 清屏
this.methods.clearNow(); console.log('更新完毕!')
})
}
})
}, clearNow: () => { this.ctx.clearRect(0, 0, 100, 200) this.ctx.draw()
}
}
}</script>