|
@@ -1,11 +1,12 @@
|
|
|
<template>
|
|
|
<div v-if="isDrag" class="metronomeMinConMask"></div>
|
|
|
<div
|
|
|
- v-if="windowMet"
|
|
|
class="metronomeMinCon"
|
|
|
:class="[metronomeMinConBoxClass]"
|
|
|
:style="metronomeMinConDragData.styleDrag.value"
|
|
|
@mousedown="hanldeMetronomeMinmousedown"
|
|
|
+ v-if="metronomeShow || windowMet"
|
|
|
+ v-show="!metronomeShow"
|
|
|
>
|
|
|
<div class="topMetronomeMin">
|
|
|
<img
|
|
@@ -13,7 +14,7 @@
|
|
|
:style="{
|
|
|
'--rotateWagTime': rotateWagTime + 's'
|
|
|
}"
|
|
|
- :class="{ pausedWagAnimation: playState === 'pause' }"
|
|
|
+ :class="{ playWagAnimation: playState === 'play' }"
|
|
|
src="./imgs/zhen.png"
|
|
|
/>
|
|
|
<img class="bai" src="./imgs/bai.png" />
|
|
@@ -26,7 +27,6 @@
|
|
|
@click="
|
|
|
() => {
|
|
|
metronomeDom?.startPlay();
|
|
|
- playState = 'play';
|
|
|
}
|
|
|
"
|
|
|
src="./imgs/paly.png"
|
|
@@ -36,7 +36,6 @@
|
|
|
@click="
|
|
|
() => {
|
|
|
metronomeDom?.pausePlay();
|
|
|
- playState = 'pause';
|
|
|
}
|
|
|
"
|
|
|
v-else
|
|
@@ -73,6 +72,7 @@
|
|
|
@closeMet="handleCloseMet"
|
|
|
@windowMet="handleWindowMet"
|
|
|
@speedNumChange="handleSpeedNumChange"
|
|
|
+ @playStateChange="handlePlayStateChange"
|
|
|
></Metronome>
|
|
|
</div>
|
|
|
</NModal>
|
|
@@ -111,7 +111,13 @@ watch(metronomeShow, () => {
|
|
|
}
|
|
|
});
|
|
|
const playState = ref<'play' | 'pause'>('pause');
|
|
|
+function handlePlayStateChange(state: 'play' | 'pause') {
|
|
|
+ playState.value = state;
|
|
|
+}
|
|
|
const rotateWagTime = ref((60 * 2) / 90);
|
|
|
+function handleSpeedNumChange(num: number) {
|
|
|
+ rotateWagTime.value = parseFloat(((60 * 2) / num).toFixed(4));
|
|
|
+}
|
|
|
onMounted(() => {
|
|
|
document.addEventListener('visibilitychange', documentHidePause);
|
|
|
});
|
|
@@ -121,16 +127,15 @@ onUnmounted(() => {
|
|
|
function documentHidePause() {
|
|
|
if (document.visibilityState === 'hidden') {
|
|
|
metronomeDom.value?.pausePlay();
|
|
|
- playState.value = 'pause';
|
|
|
}
|
|
|
}
|
|
|
function handleCloseMet() {
|
|
|
metronomeShow.value = false;
|
|
|
windowMet.value = false;
|
|
|
+ playState.value = 'pause';
|
|
|
}
|
|
|
function handleWindowMet() {
|
|
|
windowMet.value = true;
|
|
|
- playState.value = metronomeDom.value!.playState;
|
|
|
nextTick(() => {
|
|
|
computedTransformOrigin();
|
|
|
metronomeShow.value = false;
|
|
@@ -139,9 +144,6 @@ function handleWindowMet() {
|
|
|
function handleSetting() {
|
|
|
metronomeShow.value = true;
|
|
|
}
|
|
|
-function handleSpeedNumChange(num: number) {
|
|
|
- rotateWagTime.value = parseFloat(((60 * 2) / num).toFixed(4));
|
|
|
-}
|
|
|
/* 指针拖动 */
|
|
|
const users = useUserStore();
|
|
|
const metronomeMinConBoxClass = 'metronomeMinConBoxClass_drag';
|
|
@@ -208,29 +210,28 @@ function hanldeMetronomeMinmousedown() {
|
|
|
width: 13Px;
|
|
|
height: 35Px;
|
|
|
position: absolute;
|
|
|
- bottom: 6Px;
|
|
|
+ bottom: 8Px;
|
|
|
left: 50%;
|
|
|
transform: translateX(-50%);
|
|
|
transform-origin: 50% 100%;
|
|
|
- animation: rotateWag var(--rotateWagTime) linear infinite;
|
|
|
- &.pausedWagAnimation {
|
|
|
- animation-play-state: paused;
|
|
|
+ &.playWagAnimation {
|
|
|
+ animation: rotateWag var(--rotateWagTime) linear infinite;
|
|
|
}
|
|
|
@keyframes rotateWag {
|
|
|
0% {
|
|
|
- transform: translateX(-50%) rotate(0deg);
|
|
|
+ transform: translateX(-50%) rotate(-90deg);
|
|
|
}
|
|
|
25% {
|
|
|
- transform: translateX(-50%) rotate(90deg);
|
|
|
+ transform: translateX(-50%) rotate(0deg);
|
|
|
}
|
|
|
50% {
|
|
|
- transform: translateX(-50%) rotate(0deg);
|
|
|
+ transform: translateX(-50%) rotate(90deg);
|
|
|
}
|
|
|
75% {
|
|
|
- transform: translateX(-50%) rotate(-90deg);
|
|
|
+ transform: translateX(-50%) rotate(0deg);
|
|
|
}
|
|
|
100% {
|
|
|
- transform: translateX(-50%) rotate(0deg);
|
|
|
+ transform: translateX(-50%) rotate(-90deg);
|
|
|
}
|
|
|
}
|
|
|
}
|