123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import Gamecfg from "../../../common/gameCfg"
- import { gameMethod } from "../../../common/gameMethod"
- import AssetsBundleMgr from "../../../utils/AssetsBundleMgr"
- import { AudioConst } from "../../const/TypeConst"
- import GameDataCenter from "../../GameDataCenter"
- import IDataModel from "../../../frameWork/model/IDataModel"
- export class AudioModel extends IDataModel {
- bgmID: string
- bgmName: string
- constructor() {
- super('audio')
- this.bgmID = ""
- this.bgmName = ""
- }
- getBgmId(): string {
- return this.bgmID;
- }
- playMusic(id: string) {
- if (id == AudioConst.empty) { return }
- if (!GameDataCenter.setting.setting.musicOn) { return }
- if (GameDataCenter.setting.setting.musicVol == 0) { return }
- // 安全检查音乐是否正在播放
- let isMusicPlaying = false;
- try {
- if (cc.sys.platform != cc.sys.TAOBAO_MINIGAME) {
- isMusicPlaying = cc.audioEngine && typeof cc.audioEngine.isMusicPlaying === 'function' && cc.audioEngine.isMusicPlaying();
- }
- } catch (e) {
- console.log("检查音乐播放状态出错:", e)
- }
- if (this.bgmID == id && isMusicPlaying) { return }
- let cfg = Gamecfg.audioInfo.getItem(id)
- if (cfg == null || gameMethod.isEmpty(cfg.name)) { return }
- if (this.bgmName == cfg.name) {
- return
- }
- this.stopMusic()
- this.bgmID = id
- this.bgmName = cfg.name
- AssetsBundleMgr.loadBundle("audio", (err, bundle) => {
- bundle.load(cfg.name, cc.AudioClip, (error, asset: cc.AudioClip) => {
- cc.audioEngine.setMusicVolume(cfg.vol / 100)
- cc.audioEngine.playMusic(asset, true)
- })
- })
- }
- playEffect(id: string, loop: boolean = false) {
- if (id.length == 0) { return }
- if (!GameDataCenter.setting.setting.effectOn) { return }
- if (GameDataCenter.setting.setting.effectVol == 0) { return }
- if (id == AudioConst.empty) { return }
- let cfg = Gamecfg.audioInfo.getItem(id)
- if (cfg == null || gameMethod.isEmpty(cfg.name)) { return }
- AssetsBundleMgr.loadBundle("audio", (err, bundle) => {
- bundle.load(cfg.name, cc.AudioClip, (error, asset: cc.AudioClip) => {
- if (cc.sys.platform != cc.sys.TAOBAO_MINIGAME) {
- // 非淘宝小游戏,淘宝小游戏不支持设置音量
- cc.audioEngine.setEffectsVolume(cfg.vol / 100)
- }
- cc.audioEngine.playEffect(asset, loop)
- })
- })
- }
- // 关闭音乐
- stopMusic() {
- // 记录播放时间点
- // if (this.lastBgm) {
- // this.currentTimeList[this.lastBgm.name] = cc.audioEngine.getCurrentTime(this.lastBgm.id)
- // }
- try {
- if (cc.sys.platform != cc.sys.TAOBAO_MINIGAME) {
- if (cc.audioEngine && typeof cc.audioEngine.isMusicPlaying === 'function' && cc.audioEngine.isMusicPlaying()) {
- cc.audioEngine.stopMusic()
- }
- } else {
- // 淘宝小游戏平台直接调用停止,不做播放检查
- cc.audioEngine.stopMusic()
- }
- } catch (e) {
- console.log("停止音乐出错:", e)
- }
- }
- // 关掉音效
- stopAllEffects() {
- try {
- cc.audioEngine.stopAllEffects()
- } catch (e) {
- console.log("停止音效出错:", e)
- }
- }
- // 暂停音乐
- pauseMusic() {
- try {
- if (cc.sys.platform != cc.sys.TAOBAO_MINIGAME) {
- if (cc.audioEngine && typeof cc.audioEngine.isMusicPlaying === 'function' && cc.audioEngine.isMusicPlaying()) {
- cc.audioEngine.pauseMusic()
- }
- } else {
- // 淘宝小游戏平台直接调用暂停,不做播放检查
- cc.audioEngine.pauseMusic()
- }
- } catch (e) {
- console.log("暂停音乐出错:", e)
- }
- }
- // 继续音乐
- resumeMusic() {
- try {
- cc.audioEngine.resumeMusic()
- } catch (e) {
- console.log("继续播放音乐出错:", e)
- }
- }
- }
|