赞
踩
最近姑娘喜欢玩那个餐厅游戏里的钓鱼 ,经常让看广告,然后就点点点...
自己写个吧。小鱼的图片自己搞。 有问题自己改,不要私信我
- <template>
- <view class="page_main">
-
- <view class="top_linear">
- <view class="top_mean_left">
- <text>以钓到 </text>
- <text class="top_mean_tv">{{ydlist.length}} </text>
- </view>
- <view class="top_mean_center">
- <text> </text>
- <text class="top_mean_tv"></text>
- </view>
- <view class="top_mean_right">
- <text> </text>
- <text class="top_mean_tv"></text>
- </view>
-
- <view class="top_mean_right">
- <text> </text>
- <text class="top_mean_tv"> </text>
- </view>
-
- </view>
- <view class="contentone">
- <canvas class="canvas_cla" canvas-id="myCanvas" id="myCanvas"></canvas>
-
- </view>
- <view class="contenttwo">
- <canvas class="canvas_cla" canvas-id="myCanvass" @touchstart="touchstart" @touchend="touchend"
- id="myCanvass" @touchmove="touchmove"></canvas>
-
- </view>
-
-
-
-
-
-
-
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
- canvasWidth: 0,
- canvasHeight: 0,
- shuishen: 0,
- ydlist: [],
- dyl: {
- dylimg: '../static/ship.png',
- dylx: 0,
- dyly: 0,
- dylsize: 50,
- dqjl: 100,
- speedx: 2,
- yg: {
- image: "../static/yg.png",
- size: 15,
- sxspeedy: 5
- }
-
- },
- ydtimerX: '',
- ytimerX: '',
- ylist: [],
- yimages: ['../static/yu1.png', '../static/yu2.png', '../static/yu3.png',
- '../static/yu4.png', '../static/yu5.png', '../static/yu6.png',
- '../static/yu7.png', '../static/yu8.png', '../static/yu9.png',
- '../static/yu10.png', '../static/yu11.png', '../static/yu12.png', '../static/yu13.png',
- '../static/yu14.png', '../static/yu15.png', '../static/yu16.png', '../static/yu17.png',
- '../static/yu18.png'
- ],
- ygy: 100,
- istddyl: false,
- isxg: false,
- iswddl: false,
-
-
-
-
-
-
- };
- },
- onLoad() {
-
-
- this.dyl.yxstartx = this.dyl.dylx + this.dyl.dylsize
- this.dyl.dyly = this.canvasHeight - this.shuishen - this.dyl.dylsize
- this.dyl.yxstarty = this.dyl.dyly + this.dyl.dylsize - 10
- console.log(JSON.stringify(this.ylist))
- },
-
- onReady() {
- const ctx = uni.createCanvasContext('myCanvas');
- const ctxtwo = uni.createCanvasContext('myCanvass');
- this.ctx = ctx
- this.ctxtwo = ctxtwo
- const canvas = uni.createSelectorQuery().select('#myCanvas');
- canvas.boundingClientRect(rect => {
-
- this.canvasWidth = rect.width
- this.canvasHeight = rect.height
- this.shuishen = rect.height - 100
- this.addy()
- }).exec();
-
-
- this.drawyu()
- this.drawdyl()
- this.yddyl()
- this.ydy()
- },
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function() {
-
- },
- methods: {
-
- /**
- * 触摸屏幕开始 记录开始坐标
- */
- touchstart: function(e) {
-
- let startx = e.touches[0].x
- let starty = e.touches[0].y
- console.log(startx, starty)
- if (starty < this.canvasHeight - this.shuishen) {
- if (!this.isxg) {
- console.log("拖动钓鱼老")
- this.istddyl = true
- clearInterval(this.ydtimerX);
- this.dyl.dylx = startx
-
-
- this.drawdyl();
- }
- } else {
- if (!this.isxg) {
- this.ygy = starty
- this.isxg = true
- this.dyl.dqjl = this.getRandomInt(40, 100)
- }
-
- }
-
-
-
- },
- /**
- * 触摸屏幕结束 计算
- */
- touchend: function(e) {
- let x = e.changedTouches[0].x
- let y = e.changedTouches[0].y
- if (!this.isxg) {
- if (this.istddyl) {
- this.istddyl = false
- this.yddyl()
- }
- } else {
-
- }
- },
- /**
- * 触摸屏幕移动 画框
- */
- touchmove: function(e) {
- let x = e.touches[0].x
- let y = e.touches[0].y
- if (!this.isxg) {
- if (this.istddyl) {
- this.dyl.dylx = x
- this.drawdyl();
- }
- }
-
- },
- addy: function() {
- console.log("添加" + this.ylist.length)
- let count = 10 - this.ylist.length
- console.log("添加" + count)
- console.log(this.canvasHeight, this.shuishen, this.canvasHeight)
- // console.log(this.canvasHeight - this.shuishen + 50, this.canvasHeight - 50)
- for (var i = 0; i <= count; i++) {
- let bean = {}
- bean.size = this.getRandomInt(20, 40)
- bean.x = [0, this.canvasWidth - bean.size][this.getRandomInt(0, 1)]
-
- bean.y = this.getRandomInt(this.canvasHeight - this.shuishen + 50, this.canvasHeight - 80)
- bean.image = this.yimages[this.getRandomInt(0, this.yimages.length - 1)]
- bean.dqjl = this.getRandomInt(0, 100)
- bean.speedx = this.getRandomInt(1, 3)
- bean.isbdd = false
-
-
-
-
- this.ylist.push(bean)
- }
- },
-
- getRandomInt: function(min, max) {
- min = Math.ceil(min);
- max = Math.floor(max);
- return Math.floor(Math.random() * (max - min + 1)) + min;
- },
-
-
-
-
- drawdyl: function() {
- this.ctxtwo.drawImage("../static/shanshui.png", 0,
- 0, this.canvasWidth, this.canvasHeight - this.shuishen);
- var dyly = this.canvasHeight - this.shuishen - this.dyl.dylsize
- this.ctxtwo.drawImage(this.dyl.dylimg, this.dyl.dylx, dyly, this
- .dyl.dylsize, this.dyl.dylsize);
- this.ctxtwo.draw(); // 绘制到 canvas 上
-
- // 绘制鱼线(假设是简单的直线)
- this.ctxtwo.beginPath();
- this.ctxtwo.moveTo(this.dyl.dylx + this.dyl.dylsize, dyly + this.dyl.dylsize - 10); // 起点位置
- this.ctxtwo.lineTo(this.dyl.dylx + this.dyl.dylsize, this.ygy); // 终点位置
- this.ctxtwo.setStrokeStyle('#000000'); // 设置线条颜色
- this.ctxtwo.setLineWidth(2); // 设置线条宽度
- this.ctxtwo.stroke(); // 绘制线条
-
- this.ctxtwo.drawImage(this.dyl.yg.image, this.dyl.dylx + this.dyl.dylsize - this.dyl.yg.size / 3,
- this.ygy, this.dyl.yg.size,
- this.dyl.yg.size);
-
- // 将绘图上下文的内容绘制到 canvas 中
- this.ctxtwo.draw(true);
-
-
- },
- drawyu: function() {
- // 设置填充颜色
- this.ctx.setFillStyle('#1E90FF');
-
- // 绘制一个填充的长方形,参数分别为:x坐标,y坐标,宽度,高度
- this.ctx.fillRect(0, this.canvasHeight - this.shuishen, this.canvasWidth, this.shuishen);
-
- // 将绘制内容绘制到画布上
-
- for (var i = 0; i < this.ylist.length; i++) {
- var bean = this.ylist[i]
-
- this.ctx.drawImage(bean.image, bean.x, bean.y, bean.size, bean.size);
-
- }
- this.ctx.draw(); // 绘制到 canvas 上
- },
- ydy: function() {
-
-
-
- let that = this;
- let pzcount = 0
- // 在x轴上反弹
- this.ytimerX = setInterval(() => {
-
- for (var i = 0; i < this.ylist.length; i++) {
- var bean = this.ylist[i]
- if (bean.isbdd) {
- if (bean.y > 100) {
- bean.y = this.ygy - this.dyl.yg.sxspeedy
-
- } else {
- this.ydlist.push(JSON.parse(JSON.stringify(bean)))
-
- console.log("收线完成", this.ydlist.length)
- this.dyl.yg.sxspeedy = 5
- this.iswddl = false
- this.ylist.splice(i, 1)
- this.addy()
- }
- } else {
- bean.x = bean.x + bean.speedx
- if (bean.x < 0 || bean.x + bean.size > that.canvasWidth) {
- bean.speedx = -bean.speedx;
- // bean.isReversed = !bean.isReversed
- }
- }
-
- }
-
-
-
-
- that.drawyu();
- }, 100); // 每100毫秒更新一次位置
-
- },
- yddyl: function() {
-
- let that = this;
- let pzcount = 0
- // 在x轴上反弹
- this.ydtimerX = setInterval(() => {
-
- if (!that.isxg) {
- that.dyl.dylx = that.dyl.dylx + that.dyl.speedx;
-
-
- if (that.dyl.dylx < 0 || that.dyl.dylx + that.dyl.dylsize > that.canvasWidth) {
- that.dyl.speedx = -that.dyl.speedx;
- }
- } else {
- if (that.ygy > 100) {
- that.ygy = that.ygy - that.dyl.yg.sxspeedy
-
- if (!that.iswddl) {
- console.log("没调到")
- that.iswddl = that.isColliding()
-
- } else {
- console.log("调到")
- }
- } else {
- that.isxg = false
- that.ygy = 100
- that.iswddl = false
-
- }
- }
-
-
-
-
-
-
- that.drawdyl();
- }, 100); // 每100毫秒更新一次位置
-
-
- },
-
- isColliding: function() {
- let ygx = this.dyl.dylx + this.dyl.dylsize
- let ygy = this.ygy
- let ygsize = this.dyl.yg.size
-
- for (var i = 0; i < this.ylist.length; i++) {
- let bean = this.ylist[i]
-
- if (ygx < bean.x + bean.size && ygx + ygsize > bean.x && ygy < bean.y + bean
- .size && ygy + ygsize > bean.y) {
-
- if (this.dyl.dqjl + bean.dqjl >= 100) {
- bean.isbdd = true
- this.dyl.yg.sxspeedy = 45 - bean.size
- return true
- }
-
- }
-
- }
-
-
- return false
- },
-
-
-
- }
- };
- </script>
-
- <style scoped>
- .contentone {
- width: 100vw;
- height: 100vh;
- position: absolute;
- top: 80rpx;
- display: flex;
- justify-content: center;
- }
-
- .contenttwo {
- width: 100vw;
- height: 100vh;
- position: absolute;
- top: 80rpx;
- display: flex;
- justify-content: center;
- }
-
- .canvas_cla {
- width: 100vw;
- height: 100vh;
- }
-
-
- .top_linear {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- display: flex;
- flex-direction: row;
- height: 80rpx;
-
- }
-
- .top_mean_left {
- margin-left: 32rpx;
-
- }
-
- .top_mean_right {
- margin-right: 32rpx;
-
- }
-
- .top_mean_tv {
- color: #07a5a6;
- }
-
-
- .page_main {
- width: 100vw;
- height: 100vh;
- background-color: #efefef;
- }
- </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。