浏览代码

增加0拍和取消节拍间隔

黄琪勇 1 年之前
父节点
当前提交
9d3869a91d
共有 2 个文件被更改,包括 14 次插入7 次删除
  1. 5 0
      src/components/Metronome/Metronome.vue
  2. 9 7
      src/components/Metronome/useMetronome.ts

+ 5 - 0
src/components/Metronome/Metronome.vue

@@ -146,6 +146,11 @@ const dotDom = ref<HTMLElement>();
 const beatVal = ref('1');
 const beatValOpt = [
   {
+    label: '0',
+    value: '0',
+    class: 'beatValOptItem'
+  },
+  {
     label: '1',
     value: '1',
     class: 'beatValOptItem'

+ 9 - 7
src/components/Metronome/useMetronome.ts

@@ -42,14 +42,16 @@ export default function useMetronome(
     let index = 0;
     timeTask();
     function timeTask() {
-      const playVm = index === 0 ? playerTick : playerTock;
+      const bateNum = Number(timeArr[index]);
+      // 当为index=0的时候第一排为重(当为0拍的时候不为重)
+      const playVm = index === 0 && bateNum !== 0 ? playerTick : playerTock;
       playVm.play();
-      playVm.onended = () => {
-        _timeTask = setTimeout(() => {
-          index === timeArr.length - 1 ? (index = 0) : index++;
-          timeTask();
-        }, ((1000 * 60) / speed) * Number(timeArr[index]));
-      };
+      _timeTask = setTimeout(() => {
+        playVm.pause();
+        playVm.currentTime = 0;
+        index === timeArr.length - 1 ? (index = 0) : index++;
+        timeTask();
+      }, ((1000 * 60) / speed) * (bateNum || 1)); // 为0拍的时候 变为1
     }
   }
   function computeTimeArr() {