|
@@ -34,6 +34,7 @@ export default defineComponent({
|
|
|
notes: [] as IFIGNER_INSTRUMENT_Note[],
|
|
|
soundFonts: {} as any,
|
|
|
viewIndex: 0,
|
|
|
+ noteAudio: null as unknown as Howl,
|
|
|
});
|
|
|
const fingerData = reactive({
|
|
|
relationshipIndex: 0,
|
|
@@ -73,27 +74,27 @@ export default defineComponent({
|
|
|
getSounFonts();
|
|
|
});
|
|
|
|
|
|
- const noteClick = (item: IFIGNER_INSTRUMENT_Note, type: "start" | "stop") => {
|
|
|
- // console.log("🚀 ~ item:", item);
|
|
|
- const noteAudio = data.soundFonts[item.realKey];
|
|
|
- if (type === "start") {
|
|
|
- if (data.realKey) {
|
|
|
- data.soundFonts[data.realKey].stop();
|
|
|
- }
|
|
|
- data.realKey = item.realKey;
|
|
|
- if (noteAudio) {
|
|
|
- noteAudio.play();
|
|
|
- }
|
|
|
- } else {
|
|
|
- data.realKey = 0;
|
|
|
- if (noteAudio) {
|
|
|
- noteAudio.stop();
|
|
|
+ const noteClick = (item: IFIGNER_INSTRUMENT_Note) => {
|
|
|
+ if (data.noteAudio) {
|
|
|
+ data.noteAudio.stop();
|
|
|
+ if (data.realKey === item.realKey) {
|
|
|
+ data.realKey = 0;
|
|
|
+ data.noteAudio = null as unknown as Howl;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
+ data.realKey = item.realKey;
|
|
|
+ data.noteAudio = data.soundFonts[item.realKey];
|
|
|
+ data.noteAudio.play();
|
|
|
};
|
|
|
|
|
|
/** 返回 */
|
|
|
const handleBack = () => {
|
|
|
+ if (data.noteAudio) {
|
|
|
+ data.noteAudio.stop();
|
|
|
+ data.realKey = 0;
|
|
|
+ data.noteAudio = null as unknown as Howl;
|
|
|
+ }
|
|
|
if (props.isComponent) {
|
|
|
console.log("关闭");
|
|
|
emit("close");
|
|
@@ -181,11 +182,7 @@ export default defineComponent({
|
|
|
<div
|
|
|
draggable={false}
|
|
|
class={styles.note}
|
|
|
- onKeydown={() => noteClick(note, "start")}
|
|
|
- onKeyup={() => noteClick(note, "start")}
|
|
|
- onMouseleave={() => noteClick(note, "stop")}
|
|
|
- onTouchstart={() => noteClick(note, "start")}
|
|
|
- onTouchend={() => noteClick(note, "stop")}
|
|
|
+ onClick={() => noteClick(note)}
|
|
|
>
|
|
|
{data.realKey === note.realKey ? (
|
|
|
<img draggable={false} src={icons.icon_btn_ylow} />
|