You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

208 lines
4.8 KiB

4 months ago
<script>
export default {
4 months ago
globalData: {
mainSliderIndex: 0,
randomImages: [],
bgMusic: null,
3 months ago
isMusicPlaying: false,
musicSrc: 'https://static.ticket.sz-trip.com/epicSoul/EpicSouls.mp3',
currentAudio: null // 全局音频实例
4 months ago
},
4 months ago
onLaunch: function() {
4 months ago
console.warn('当前组件仅支持 uni_modules 目录结构 ,请升级 HBuilderX 到 3.1.0 版本以上!')
4 months ago
console.log('App Launch')
3 months ago
// 移除初始化背景音乐的调用
// this.initBackgroundMusic();
3 months ago
// 审核
this.Post({id: 10217},'/api/article/getArticleById').then(res => {
try {
2 months ago
let SHFlag = res.data.title
// let SHFlag = res.data.subtitle
3 months ago
uni.setStorageSync('SHFlag', SHFlag)
} catch(e) {}
});
4 months ago
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
4 months ago
},
methods: {
initBackgroundMusic() {
try {
3 months ago
console.log('bgMusic',this.globalData.bgMusic)
// 销毁旧的音频实例(关键!)
if (this.globalData.bgMusic) {
this.globalData.bgMusic.stop();
this.globalData.bgMusic.destroy()
this.globalData.bgMusic = null;
}
4 months ago
let bgMusic;
3 months ago
4 months ago
// 区分平台 - 小程序环境使用背景音频,H5等环境使用内部音频
// #ifdef MP-WEIXIN
3 months ago
// try {
// bgMusic = uni.getBackgroundAudioManager();
// // 小程序环境需要设置title
// bgMusic.title = '背景音乐';
// // 设置音频组件的 ID
// bgMusic.id = 'mp-audio';
// } catch (e) {
// console.error('获取背景音频管理器失败,改用内部音频上下文', e);
// bgMusic = uni.createInnerAudioContext();
// }
bgMusic = uni.createInnerAudioContext();
4 months ago
// #endif
3 months ago
4 months ago
// #ifndef MP-WEIXIN
bgMusic = uni.createInnerAudioContext();
// #endif
3 months ago
4 months ago
// 配置音频
3 months ago
bgMusic.src = this.globalData.musicSrc;
console.log(bgMusic.src)
4 months ago
bgMusic.loop = true; // 循环播放
3 months ago
4 months ago
// 使用不同的事件监听方式,兼容两种音频上下文
if (bgMusic.onPlay) {
// BackgroundAudioManager 方式
bgMusic.onPlay(() => {
this.globalData.isMusicPlaying = true;
});
3 months ago
4 months ago
bgMusic.onPause(() => {
this.globalData.isMusicPlaying = false;
});
3 months ago
4 months ago
bgMusic.onStop(() => {
this.globalData.isMusicPlaying = false;
});
3 months ago
4 months ago
bgMusic.onEnded(() => {
// 循环播放 (BackgroundAudioManager需要重新设置src)
3 months ago
bgMusic.src = this.globalData.musicSrc;
4 months ago
bgMusic.play();
});
} else {
// InnerAudioContext 方式
bgMusic.onPlay(() => {
this.globalData.isMusicPlaying = true;
});
3 months ago
4 months ago
bgMusic.onPause(() => {
this.globalData.isMusicPlaying = false;
});
3 months ago
4 months ago
bgMusic.onStop(() => {
this.globalData.isMusicPlaying = false;
});
3 months ago
4 months ago
bgMusic.onEnded(() => {
// InnerAudioContext设置了loop不需要手动重新播放
this.globalData.isMusicPlaying = false;
});
}
3 months ago
4 months ago
// 保存到全局
this.globalData.bgMusic = bgMusic;
3 months ago
4 months ago
// 创建全局方法供其他页面调用
uni.$bgMusic = {
play: () => {
if (bgMusic && bgMusic.play) {
bgMusic.play();
}
return this.globalData.isMusicPlaying;
},
pause: () => {
if (bgMusic && bgMusic.pause) {
bgMusic.pause();
}
return this.globalData.isMusicPlaying;
},
toggle: () => {
if (!bgMusic) return false;
3 months ago
4 months ago
if (this.globalData.isMusicPlaying) {
if (bgMusic.pause) bgMusic.pause();
} else {
if (bgMusic.play) bgMusic.play();
}
return this.globalData.isMusicPlaying;
},
isPlaying: () => this.globalData.isMusicPlaying
};
} catch (err) {
console.error('初始化背景音乐失败:', err);
}
3 months ago
},
updateMusicSrc(newSrc) {
this.globalData.musicSrc = newSrc;
if (this.globalData.bgMusic) {
this.globalData.bgMusic.src = newSrc;
}
4 months ago
}
4 months ago
}
}
</script>
4 months ago
<style lang="scss">
4 months ago
/*每个页面公共css */
4 months ago
@import '@/uni_modules/uni-scss/index.scss';
@import "@/static/css/base.css";
3 months ago
4 months ago
/* #ifndef APP-NVUE */
// 设置整个项目的背景色
page {
background-color: #f5f5f5;
}
/* #endif */
.example-info {
font-size: 14px;
color: #333;
padding: 10px;
}
3 months ago
4 months ago
/* 清除按钮默认样式 */
button::after {
border: none;
}
3 months ago
4 months ago
@keyframes bounce {
3 months ago
4 months ago
0%,
20%,
50%,
80%,
100% {
transform: translateY(0);
}
3 months ago
4 months ago
40% {
transform: translateY(-20rpx);
}
3 months ago
4 months ago
60% {
transform: translateY(-10rpx);
}
}
3 months ago
4 months ago
/* 音乐控制按钮动画 */
@keyframes rotate {
from {
transform: rotate(0deg);
}
3 months ago
4 months ago
to {
transform: rotate(360deg);
}
}
3 months ago
/* 隐藏微信小程序默认音频组件 */
#mp-audio {
display: none;
}
</style>