封装背景音乐功能

This commit is contained in:
Andy Leong
2024-01-12 00:33:19 +08:00
parent de023d9c2e
commit 2feefb2c38
5 changed files with 1461 additions and 15 deletions

View File

@@ -1,7 +1,7 @@
// 常用的方法
import gsap from 'gsap'
import { Howl, Howler } from 'howler';
import { createVNode, render } from 'vue'
// 初始化
@@ -14,18 +14,44 @@ const sound = new Howl({
// 背景音乐
export function bgm(autoPlay) {
let div = document.createElement('div')
let audio = document.createElement('audio')
const musicNode = createVNode(
'div',
{
class: 'music-icon',
id: 'musicBtn',
onClick: () => {
let auduoEle = document.querySelector("#audio")
if (auduoEle.paused) {
auduoEle.play()
audioAni.play()
} else {
auduoEle.pause()
audioAni.pause()
}
},
},
)
const audioNode = createVNode(
'audio',
{
class: 'audio-icon',
id: 'audio',
src: new URL(`@/assets/media/bgm.mp3`, import.meta.url).href,
autoPlay: true,
loop: true,
div.append(audio)
document.body.append(div)
},
)
// const bgm = new Howl({ src: [new URL(`@/assets/media/bgm.mp3`, import.meta.url).href] });
// bgm.play()
render(musicNode, document.body);
render(audioNode, document.querySelector("#musicBtn"));
let audioAni = gsap.timeline({ paused: true })
audioAni.to('#musicBtn', { duration: 10, rotation: "+=360", repeat: -1, ease: 'none' })
setTimeout(() => {
audioAni.play()
}, 1000)
}