web-africa-h5/components/ay-lottery/blow_qi.vue

146 lines
2.6 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<view class="scratch" :style="style_wh">
<view class="box" :style="{background: themeColor }">
<!-- 结果-->
<view class="result" :style="[{'font-size':txtFontSize+'rpx'},{color: txtColor }]">
<text>{{result_txt}}</text>
</view>
<!-- 刮奖canvas容器 -->
<canvas class="canvas-box" :canvas-id="canvasId" @touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd"></canvas>
</view>
</view>
</view>
</template>
<script>
import scratch from './scratch.js'
export default {
props: {
result_txt: {
type: String,
default: '结果',
},
// 绘制刮范围高
height: {
type: Number,
default: 150
},
// 绘制刮范围宽
width: {
type: Number,
default: 350
},
themeColor: {
type: String,
default: '#33CCCC',
},
txtColor: {
type: String,
default: '#FFFFFF',
},
txtFontSize: {
type: Number,
default: 50,
},
canvasId: {
type: String,
default: 'blow',
},
},
data() {
return {
scratchSize: 10, // 触手大小
scratchScale: 0.30, // 需刮开百分比
}
},
computed: {
style_wh() {
let that = this;
var height = parseInt(that.height);
var width = parseInt(that.width);
var style = '';
if (height > 0) {
style = `height:${height*1.5}rpx;`;
}
if (width > 0) {
style += `width:${width*1.5}rpx;`;
}
return style;
},
},
methods: {
touchStart(){},
touchMove(){},
touchEnd(){},
initBlow() {
// 刮初始化信息必须在onReady后不然h5不支持小程序可在onLoad执行
new scratch(this, {
canvasId: this.canvasId,
width: this.scratchWidth,
height: this.scratchHeight,
size: this.scratchSize,
scale: this.scratchScale
})
}
}
}
</script>
<style lang="scss">
.scratch {
background-size: contain;
margin: 20rpx auto;
box-sizing: border-box;
position: relative;
overflow: hidden;
.box {
width: 100%;
height: 100%;
// background: #aaaa7f;
border-radius: 10rpx;
position: relative;
overflow: hidden;
.result {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
// font-size: 50rpx;
// color: #FFFFFF;
}
.canvas-box {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 10rpx;
overflow: hidden;
}
}
.tip {
position: fixed;
text-align: center;
top: 300rpx;
left: 300rpx;
width: 150rpx;
font-size: 40rpx;
font-weight: bold;
z-index: 999;
}
}
</style>