bgmStatus

This commit is contained in:
ckcz123 2019-01-03 13:09:18 +08:00
parent ba2f92572b
commit 5e563ab410
10 changed files with 36 additions and 54 deletions

View File

@ -31,7 +31,7 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"bgms": { "bgms": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",
"_data": "在此存放所有的bgm和文件名一致。第一项为默认播放项 \n音频名不能使用中文不能带空格或特殊字符可以直接改名拼音就好" "_data": "在此存放所有的bgm和文件名一致。 \n音频名不能使用中文不能带空格或特殊字符可以直接改名拼音就好"
}, },
"sounds": { "sounds": {
"_leaf": true, "_leaf": true,
@ -62,6 +62,12 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"_range": "(thiseval instanceof Array && thiseval.length<=6)||thiseval==null", "_range": "(thiseval instanceof Array && thiseval.length<=6)||thiseval==null",
"_data": "装备位名称为不超过6个的数组此项的顺序与equiptype数值关联例如可写[\"武器\",\"防具\",\"首饰\"]等等。" "_data": "装备位名称为不超过6个的数组此项的顺序与equiptype数值关联例如可写[\"武器\",\"防具\",\"首饰\"]等等。"
}, },
"startBgm": {
"_leaf": true,
"_type": "textarea",
"_string": true,
"_data": "在标题界面应该播放的bgm内容"
},
"statusLeftBackground": { "statusLeftBackground": {
"_leaf": true, "_leaf": true,
"_type": "textarea", "_type": "textarea",

View File

@ -144,8 +144,8 @@ editor_blockly = function () {
MotaActionBlocks['screenFlash_s'].xmlText(), MotaActionBlocks['screenFlash_s'].xmlText(),
MotaActionBlocks['setWeather_s'].xmlText(), MotaActionBlocks['setWeather_s'].xmlText(),
MotaActionBlocks['playBgm_s'].xmlText(), MotaActionBlocks['playBgm_s'].xmlText(),
MotaActionBlocks['pauseBgm_s'].xmlText(), // MotaActionBlocks['pauseBgm_s'].xmlText(),
MotaActionBlocks['resumeBgm_s'].xmlText(), // MotaActionBlocks['resumeBgm_s'].xmlText(),
MotaActionBlocks['loadBgm_s'].xmlText(), MotaActionBlocks['loadBgm_s'].xmlText(),
MotaActionBlocks['freeBgm_s'].xmlText(), MotaActionBlocks['freeBgm_s'].xmlText(),
MotaActionBlocks['playSound_s'].xmlText(), MotaActionBlocks['playSound_s'].xmlText(),

View File

@ -374,7 +374,7 @@ floorId指定的是目标楼层的唯一标识符ID
要播放音乐和音效你需要将对应的文件放在sounds目录下然后在全塔属性中进行定义 要播放音乐和音效你需要将对应的文件放在sounds目录下然后在全塔属性中进行定义
``` js ``` js
"bgms": [ // 在此存放所有的bgm和文件名一致。第一项为默认播放项 "bgms": [ // 在此存放所有的bgm和文件名一致。
// 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好 // 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好
'bgm.mp3' 'bgm.mp3'
]; ];

View File

@ -1256,10 +1256,14 @@ async可选如果为true则会异步执行即不等待当前事件执行
使用`{"type": "pauseBgm"}`可以暂停背景音乐的播放。 使用`{"type": "pauseBgm"}`可以暂停背景音乐的播放。
**从V2.5.4开始不再支持此事件,请通过设置音量来达到此效果。**
### resumeBgm恢复背景音乐 ### resumeBgm恢复背景音乐
使用`{"type": "resumeBgm"}`可以恢复背景音乐的播放。 使用`{"type": "resumeBgm"}`可以恢复背景音乐的播放。
**从V2.5.4开始不再支持此事件,请通过设置音量来达到此效果。**
### loadBgm预加载一个背景音乐 ### loadBgm预加载一个背景音乐
使用loadBgm可以预加载一个背景音乐。 使用loadBgm可以预加载一个背景音乐。

View File

@ -1840,7 +1840,6 @@ actions.prototype.clickSwitchs = function (x,y) {
core.resumeBgm(); core.resumeBgm();
else { else {
core.pauseBgm(); core.pauseBgm();
core.musicStatus.playingBgm = null;
} }
core.setLocalStorage('bgmStatus', core.musicStatus.bgmStatus); core.setLocalStorage('bgmStatus', core.musicStatus.bgmStatus);
core.ui.drawSwitchs(); core.ui.drawSwitchs();

View File

@ -432,8 +432,7 @@ control.prototype.resetStatus = function(hero, hard, floorId, route, maps, value
////// 重新开始游戏;此函数将回到标题页面 ////// ////// 重新开始游戏;此函数将回到标题页面 //////
control.prototype.restart = function(noAnimate) { control.prototype.restart = function(noAnimate) {
this.showStartAnimate(noAnimate); this.showStartAnimate(noAnimate);
if (core.bgms.length>0) core.playBgm(main.startBgm);
core.playBgm(core.bgms[0]);
} }
@ -2501,10 +2500,19 @@ control.prototype.unLockControl = function () {
////// 播放背景音乐 ////// ////// 播放背景音乐 //////
control.prototype.playBgm = function (bgm) { control.prototype.playBgm = function (bgm) {
if (main.mode!='play')return; if (main.mode!='play')return;
// 如果不允许播放
if (!core.musicStatus.bgmStatus) return;
// 音频不存在 // 音频不存在
if (!core.isset(core.material.bgms[bgm])) return; if (!core.isset(core.material.bgms[bgm])) return;
// 如果不允许播放
if (!core.musicStatus.bgmStatus) {
try {
core.musicStatus.playingBgm = bgm;
core.material.bgms[bgm].pause();
}
catch (e) {
console.log(e);
}
return;
}
/* /*
// 延迟播放 // 延迟播放
@ -2518,11 +2526,11 @@ control.prototype.playBgm = function (bgm) {
// 缓存BGM // 缓存BGM
core.loader.loadBgm(bgm); core.loader.loadBgm(bgm);
// 如果当前正在播放且和本BGM相同直接忽略 // 如果当前正在播放且和本BGM相同直接忽略
if (core.musicStatus.playingBgm == bgm && core.musicStatus.isPlaying) { if (core.musicStatus.playingBgm == bgm && !core.material.bgms[core.musicStatus.playingBgm].paused) {
return; return;
} }
// 如果正在播放中,暂停 // 如果正在播放中,暂停
if (core.isset(core.musicStatus.playingBgm) && core.musicStatus.isPlaying) { if (core.isset(core.musicStatus.playingBgm)) {
core.material.bgms[core.musicStatus.playingBgm].pause(); core.material.bgms[core.musicStatus.playingBgm].pause();
} }
// 播放当前BGM // 播放当前BGM
@ -2530,7 +2538,6 @@ control.prototype.playBgm = function (bgm) {
core.material.bgms[bgm].currentTime = 0; core.material.bgms[bgm].currentTime = 0;
core.material.bgms[bgm].play(); core.material.bgms[bgm].play();
core.musicStatus.playingBgm = bgm; core.musicStatus.playingBgm = bgm;
core.musicStatus.isPlaying = true;
} }
catch (e) { catch (e) {
console.log("无法播放BGM "+bgm); console.log("无法播放BGM "+bgm);
@ -2546,7 +2553,6 @@ control.prototype.pauseBgm = function () {
if (core.isset(core.musicStatus.playingBgm)) { if (core.isset(core.musicStatus.playingBgm)) {
core.material.bgms[core.musicStatus.playingBgm].pause(); core.material.bgms[core.musicStatus.playingBgm].pause();
} }
core.musicStatus.isPlaying = false;
} }
catch (e) { catch (e) {
console.log("无法暂停BGM"); console.log("无法暂停BGM");
@ -2557,24 +2563,10 @@ control.prototype.pauseBgm = function () {
////// 恢复背景音乐的播放 ////// ////// 恢复背景音乐的播放 //////
control.prototype.resumeBgm = function () { control.prototype.resumeBgm = function () {
if (main.mode!='play')return; if (main.mode!='play')return;
// 如果不允许播放
if (!core.musicStatus.bgmStatus) return;
// 恢复BGM // 恢复BGM
try { try {
if (core.isset(core.musicStatus.playingBgm)) { core.playBgm(core.musicStatus.playingBgm);
core.material.bgms[core.musicStatus.playingBgm].play();
core.musicStatus.isPlaying = true;
}
else {
if (core.bgms.length>0) {
if (core.isset(core.status.thisMap.bgm)) {
core.playBgm(core.status.thisMap.bgm);
}
else
core.playBgm(core.bgms[0]);
}
}
} }
catch (e) { catch (e) {
console.log("无法恢复BGM"); console.log("无法恢复BGM");
@ -2619,13 +2611,7 @@ control.prototype.playSound = function (sound) {
} }
control.prototype.checkBgm = function() { control.prototype.checkBgm = function() {
if (core.musicStatus.startDirectly && core.musicStatus.bgmStatus) { core.playBgm(main.startBgm);
if (core.musicStatus.playingBgm==null
|| core.material.bgms[core.musicStatus.playingBgm].paused) {
core.musicStatus.playingBgm=null;
core.playBgm(core.bgms[0]);
}
}
} }
////// 清空状态栏 ////// ////// 清空状态栏 //////

View File

@ -50,11 +50,9 @@ function core() {
} }
this.musicStatus = { this.musicStatus = {
'audioContext': null, // WebAudioContext 'audioContext': null, // WebAudioContext
'startDirectly': false, // 是否直接播放(加载)音乐
'bgmStatus': false, // 是否播放BGM 'bgmStatus': false, // 是否播放BGM
'soundStatus': true, // 是否播放SE 'soundStatus': true, // 是否播放SE
'playingBgm': null, // 正在播放的BGM 'playingBgm': null, // 正在播放的BGM
'isPlaying': false,
'gainNode': null, 'gainNode': null,
'volume': 1.0, // 音量 'volume': 1.0, // 音量
'cachedBgms': [], // 缓存BGM内容 'cachedBgms': [], // 缓存BGM内容
@ -310,24 +308,11 @@ core.prototype.init = function (coreData, callback) {
} }
} }
if (core.platform.isPC) {
// 如果是PC端直接加载
core.musicStatus.startDirectly = true;
}
else {
var connection = navigator.connection;
if (core.isset(connection) && connection.type=='wifi')
core.musicStatus.startDirectly = true;
}
// 先从存储中读取BGM状态 // 先从存储中读取BGM状态
core.musicStatus.bgmStatus = core.getLocalStorage('bgmStatus', true); core.musicStatus.bgmStatus = core.getLocalStorage('bgmStatus', true);
if (!core.musicStatus.startDirectly) // 如果当前网络环境不允许 if (!core.platform.isPC && (navigator.connection||{}).type!='wifi')
core.musicStatus.bgmStatus = false; core.musicStatus.bgmStatus = false;
// core.setLocalStorage('bgmStatus', core.musicStatus.bgmStatus);
core.musicStatus.soundStatus = core.getLocalStorage('soundStatus', true); core.musicStatus.soundStatus = core.getLocalStorage('soundStatus', true);
core.setLocalStorage('soundStatus', core.musicStatus.soundStatus);
// switchs // switchs
core.flags.battleAnimate = core.getLocalStorage('battleAnimate', core.flags.battleAnimate); core.flags.battleAnimate = core.getLocalStorage('battleAnimate', core.flags.battleAnimate);

View File

@ -912,7 +912,8 @@ events.prototype.doAction = function() {
case "playBgm": case "playBgm":
core.playBgm(data.name); core.playBgm(data.name);
this.doAction(); this.doAction();
break break;
/*
case "pauseBgm": case "pauseBgm":
core.pauseBgm(); core.pauseBgm();
this.doAction(); this.doAction();
@ -921,6 +922,7 @@ events.prototype.doAction = function() {
core.resumeBgm(); core.resumeBgm();
this.doAction(); this.doAction();
break break
*/
case "loadBgm": case "loadBgm":
if (core.platform.isPC) if (core.platform.isPC)
core.loadBgm(data.name); core.loadBgm(data.name);

View File

@ -256,8 +256,7 @@ loader.prototype.loadMusic = function () {
}); });
// 直接开始播放 // 直接开始播放
if (core.musicStatus.startDirectly && core.bgms.length>0) core.playBgm(main.startBgm);
core.playBgm(core.bgms[0]);
} }
loader.prototype.loadOneMusic = function (name) { loader.prototype.loadOneMusic = function (name) {

View File

@ -57,6 +57,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"武器", "武器",
"盾牌" "盾牌"
], ],
"startBgm": "bgm.mp3",
"statusLeftBackground": "url(project/images/ground.png) repeat", "statusLeftBackground": "url(project/images/ground.png) repeat",
"statusTopBackground": "url(project/images/ground.png) repeat", "statusTopBackground": "url(project/images/ground.png) repeat",
"toolsBackground": "url(project/images/ground.png) repeat", "toolsBackground": "url(project/images/ground.png) repeat",