From 57b25e78053391a0e424536dc35d4f54e2a45019 Mon Sep 17 00:00:00 2001 From: kron Date: Thu, 29 May 2025 23:56:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=80=90=E5=8A=9B=E8=B5=9B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/BowTarget.vue | 1 + src/pages/practise-one.vue | 11 ++++---- src/pages/practise-two.vue | 55 ++++++++++++++++++++++++++++-------- 3 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/components/BowTarget.vue b/src/components/BowTarget.vue index 5c2ceea..65dd076 100644 --- a/src/components/BowTarget.vue +++ b/src/components/BowTarget.vue @@ -77,6 +77,7 @@ function calcRealY(num) { } .target { position: relative; + overflow: hidden; } .target > image:last-child { width: 100%; diff --git a/src/pages/practise-one.vue b/src/pages/practise-one.vue index 6300201..75ed6ba 100644 --- a/src/pages/practise-one.vue +++ b/src/pages/practise-one.vue @@ -13,10 +13,10 @@ import websocket from "@/websocket"; const start = ref(false); const showScore = ref(false); const scores = ref([]); +const total = 12; const onReady = async () => { - const result = await createPractiseAPI(12); - console.log("result", result); + const result = await createPractiseAPI(total); start.value = true; const token = uni.getStorageSync("token"); @@ -25,8 +25,7 @@ const onReady = async () => { messages.forEach((msg) => { if (msg.constructor === MESSAGETYPES.ShootSyncMeArrowID) { scores.value.push(msg.target); - console.log("msg:", msg.target); - if (scores.value.length === 12) { + if (scores.value.length === total) { showScore.value = true; websocket.closeWebSocket(); } @@ -46,7 +45,7 @@ onUnmounted(() => {
{ /> -import { ref } from "vue"; +import { ref, onUnmounted } from "vue"; import AppBackground from "@/components/AppBackground.vue"; import Header from "@/components/Header.vue"; import ShootProgress from "@/components/ShootProgress.vue"; import BowTarget from "@/components/BowTarget.vue"; import ScorePanel from "@/components/ScorePanel.vue"; import ScoreResult from "@/components/ScoreResult.vue"; -const scores = ref(new Array(32).fill(9)); +import SButton from "@/components/SButton.vue"; +import { createPractiseAPI } from "@/apis"; +import { MESSAGETYPES } from "@/constants"; +import websocket from "@/websocket"; +const start = ref(false); const showScore = ref(false); +const scores = ref([]); +const total = 36; -setTimeout(() => { - showScore.value = true; -}, 2000); +const onReady = async () => { + const result = await createPractiseAPI(total); + start.value = true; + const token = uni.getStorageSync("token"); + + websocket.createWebSocket(token, (result) => { + const messages = JSON.parse(result).data.updates || []; + messages.forEach((msg) => { + if (msg.constructor === MESSAGETYPES.ShootSyncMeArrowID) { + scores.value.push(msg.target); + if (scores.value.length === total) { + showScore.value = true; + websocket.closeWebSocket(); + } + } + }); + }); +}; + +onUnmounted(() => { + websocket.closeWebSocket(); +});