|
@@ -15,64 +15,75 @@
|
15
|
15
|
|
16
|
16
|
<script setup>
|
17
|
17
|
import { ref } from 'vue'
|
18
|
|
- import FireWork from './FireWork.vue'
|
19
|
|
- const colorList = ['#f5222d', '#d4380d', '#d46b08', '#d48806', '#d4b106', '#7cb305', '#389e0d', '#08979c', '#096dd9', '#531dab']
|
20
|
|
- const random = (n, m) => parseInt(Math.random()*(n-m+1)+m)
|
21
|
|
-
|
22
|
|
- const props = defineProps({
|
23
|
|
- center: {
|
24
|
|
- type: Object,
|
25
|
|
- required: true,
|
26
|
|
- },
|
27
|
|
- raduis: {
|
28
|
|
- type: Number,
|
29
|
|
- required: true,
|
30
|
|
- },
|
31
|
|
- })
|
|
18
|
+import FireWork from './FireWork.vue'
|
|
19
|
+const colorList = [
|
|
20
|
+ '#f5222d',
|
|
21
|
+ '#d4380d',
|
|
22
|
+ '#d46b08',
|
|
23
|
+ '#d48806',
|
|
24
|
+ '#d4b106',
|
|
25
|
+ '#7cb305',
|
|
26
|
+ '#389e0d',
|
|
27
|
+ '#08979c',
|
|
28
|
+ '#096dd9',
|
|
29
|
+ '#531dab'
|
|
30
|
+]
|
|
31
|
+const random = (n, m) => parseInt(Math.random() * (n - m + 1) + m)
|
32
|
32
|
|
33
|
|
- const fireNum = ref(12)
|
34
|
|
- const isFinished = ref(true)
|
|
33
|
+const props = defineProps({
|
|
34
|
+ center: {
|
|
35
|
+ type: Object,
|
|
36
|
+ required: true
|
|
37
|
+ },
|
|
38
|
+ raduis: {
|
|
39
|
+ type: Number,
|
|
40
|
+ required: true
|
|
41
|
+ }
|
|
42
|
+})
|
35
|
43
|
|
36
|
|
- const calcLeft = (inx) => {
|
37
|
|
- let start, end;
|
38
|
|
- if (inx < fireNum.value / 2) {
|
39
|
|
- start = props.center.x - props.raduis - 150 // 150 随便写的
|
40
|
|
- end = props.center.x
|
41
|
|
- } else {
|
42
|
|
- start = props.center.x
|
43
|
|
- end = props.center.x + props.raduis
|
44
|
|
- }
|
|
44
|
+const fireNum = ref(12)
|
|
45
|
+const isFinished = ref(true)
|
45
|
46
|
|
46
|
|
- return `${random(start, end)}px`
|
|
47
|
+const calcLeft = (inx) => {
|
|
48
|
+ let start, end
|
|
49
|
+ if (inx < fireNum.value / 2) {
|
|
50
|
+ start = props.center.x - props.raduis - 150 // 150 随便写的
|
|
51
|
+ end = props.center.x
|
|
52
|
+ } else {
|
|
53
|
+ start = props.center.x
|
|
54
|
+ end = props.center.x + props.raduis
|
47
|
55
|
}
|
48
|
56
|
|
49
|
|
- const calcTop = (inx) => {
|
50
|
|
- let start, end;
|
51
|
|
- start = props.center.y - props.raduis - 150 // 50 随便写的
|
52
|
|
- end = props.center.y - props.raduis
|
|
57
|
+ return `${random(start, end)}px`
|
|
58
|
+}
|
53
|
59
|
|
54
|
|
- return `${random(start, end)}px`
|
55
|
|
- }
|
|
60
|
+const calcTop = (inx) => {
|
|
61
|
+ let start, end
|
|
62
|
+ start = props.center.y - props.raduis - 150 // 50 随便写的
|
|
63
|
+ end = props.center.y - props.raduis
|
56
|
64
|
|
57
|
|
- const clacScale = () => {
|
58
|
|
- const r = Math.random();
|
|
65
|
+ return `${random(start, end)}px`
|
|
66
|
+}
|
59
|
67
|
|
60
|
|
- if (r < 0.1) return 0.1
|
61
|
|
- if (r > 0.5) return 0.5
|
62
|
|
- return r
|
63
|
|
- }
|
|
68
|
+const clacScale = () => {
|
|
69
|
+ const r = Math.random()
|
64
|
70
|
|
65
|
|
- const handleEnd = () => {
|
66
|
|
- if (isFinished.value) return
|
67
|
|
- isFinished.value = true
|
|
71
|
+ if (r < 0.1) return 0.1
|
|
72
|
+ if (r > 0.5) return 0.5
|
|
73
|
+ return r
|
|
74
|
+}
|
68
|
75
|
|
69
|
|
- const t = setTimeout(() => {
|
70
|
|
- fireNum.value = random(10, 20)
|
71
|
|
- clearTimeout(t)
|
72
|
|
- }, 0)
|
73
|
|
- }
|
|
76
|
+const handleEnd = () => {
|
|
77
|
+ if (isFinished.value) return
|
|
78
|
+ isFinished.value = true
|
|
79
|
+
|
|
80
|
+ const t = setTimeout(() => {
|
|
81
|
+ fireNum.value = random(10, 20)
|
|
82
|
+ clearTimeout(t)
|
|
83
|
+ }, 0)
|
|
84
|
+}
|
74
|
85
|
|
75
|
|
- defineExpose({
|
76
|
|
- toggle: () => isFinished.value = false
|
77
|
|
- })
|
|
86
|
+defineExpose({
|
|
87
|
+ toggle: () => (isFinished.value = false)
|
|
88
|
+})
|
78
|
89
|
</script>
|