methods: {
drawArcByPoint (x, y) {
this.context.beginPath();
const getOffset = dom => {
let left = 0;
let top = 0;
while (dom) {
left += dom.offsetLeft;
top += dom.offsetTop;
dom = dom.offsetParent;
}
return { left, top };
};
const offset = getOffset(this.canvas);
this.context.arc(x - offset.left, y - offset.top, 20, 0, Math.PI * 2);
this.context.closePath();
this.context.fillStyle = '#ff0000';
this.context.fill();
this.checkComplete();
},
// 判断是否完成刮奖 点数大于80%
checkComplete () {
const imgData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height);
const pxData = imgData.data;// 获取字节数据
const len = pxData.length; // 获取字节长度
let count = 0; // 记录透明点的个数
// 主要的思想是 一个像素由四个数据组成,每个数据分别是 rgba() 所以第四个数据 a 表示alpha透明度
for (let i = 0; i < len; i += 4) {
const alpha = pxData[i + 3]; //
Vue中刮奖逻辑
最新推荐文章于 2024-03-28 18:09:42 发布