张延森 3 anos atrás
pai
commit
5d6edab3fa

+ 6
- 1
src/components/MusicOnce.vue Ver arquivo

@@ -6,13 +6,18 @@
6 6
 import { ref } from 'vue'
7 7
 
8 8
 const props = defineProps({
9
-  src: String
9
+  src: String,
10
+  volume: {
11
+    type: Number,
12
+    default: 1,
13
+  },
10 14
 })
11 15
 
12 16
 const audioRef = ref()
13 17
 
14 18
 defineExpose({
15 19
   play: () => {
20
+    audioRef.value.volume = props.volume
16 21
     audioRef.value.currentTime = 0
17 22
     audioRef.value.play()
18 23
   },

+ 3
- 1
src/pages/game/algorithm/bullet.js Ver arquivo

@@ -3,7 +3,7 @@ import { scale, desginCageRadius, pedestalOffsetX, pedestalOffsetY, cageNum } fr
3 3
 import bulletImage from '@/assets/RoundaboutImage/2-13.png';
4 4
 
5 5
 // 子弹的核心逻辑
6
-export default ({two, center, speed}) => {
6
+export default ({two, center, speed, getGameState}) => {
7 7
   const _event = new Two.Events()
8 8
 
9 9
   // 子弹个数 = 轿厢个数
@@ -65,6 +65,8 @@ export default ({two, center, speed}) => {
65 65
 
66 66
   // 射击
67 67
   function shoot() {
68
+    if (getGameState() !== 1) return;
69
+
68 70
     _event.dispatchEvent('beforeShoot')
69 71
     two.addEventListener('update', fly)
70 72
   }

+ 7
- 1
src/pages/game/algorithm/index.js Ver arquivo

@@ -22,6 +22,10 @@ export default ({ el, center, rotateSpeed = 0.015, speed = -5 }) => {
22 22
   // 事件发射器
23 23
   const _evt = new Two.Events();
24 24
 
25
+  // 游戏状态, 0 未开始, 1进行中, 2已结束
26
+  const status = 0;
27
+  const getGameState = () => status;
28
+
25 29
   // 绘制背景
26 30
   drawBg({ two, center });
27 31
 
@@ -41,7 +45,7 @@ export default ({ el, center, rotateSpeed = 0.015, speed = -5 }) => {
41 45
   const counter = drawCounter({ two, center })
42 46
 
43 47
   // 绘制子弹
44
-  const clip = drawBullets({two, center, speed })
48
+  const clip = drawBullets({two, center, speed, getGameState })
45 49
 
46 50
   // 整体绘制结束  
47 51
   two.update();
@@ -52,6 +56,7 @@ export default ({ el, center, rotateSpeed = 0.015, speed = -5 }) => {
52 56
   function gameOver(isSuccess) {
53 57
     // 停止摩天轮旋转
54 58
     wheel.stop();
59
+    status = 1; // 游戏结束
55 60
 
56 61
     const t = setTimeout(() => {
57 62
       clearTimeout(t)      
@@ -101,6 +106,7 @@ export default ({ el, center, rotateSpeed = 0.015, speed = -5 }) => {
101 106
     on: _evt.on.bind(_evt),
102 107
     fire: clip.shoot,
103 108
     play: () => {
109
+      status = 1; // 游戏开始
104 110
       clip.bulletLoad() // 先上膛一颗子弹
105 111
       wheel.rotate();
106 112
       two.play();

+ 1
- 1
src/pages/game/index.vue Ver arquivo

@@ -2,7 +2,7 @@
2 2
   <div @click="handleClick">
3 3
     <div ref="el" />
4 4
     <FireWorkListVue ref="firesRef" :center="center" :raduis="raduis" />
5
-    <MusicOnce ref="bingoRef" :src="bingoMusic" />
5
+    <MusicOnce ref="bingoRef" :src="bingoMusic" :volume="0.5"/>
6 6
     <MusicOnce ref="failRef" :src="failMusic" />
7 7
     <MusicOnce ref="successRef" :src="successMusic" />
8 8