npc48 animate & loadBgm
This commit is contained in:
parent
9739612132
commit
622f5eb8be
@ -1316,13 +1316,11 @@ async可选,如果为true则会异步执行(即不等待当前事件执行
|
|||||||
### pauseBgm:暂停背景音乐
|
### pauseBgm:暂停背景音乐
|
||||||
|
|
||||||
使用`{"type": "pauseBgm"}`可以暂停背景音乐的播放。
|
使用`{"type": "pauseBgm"}`可以暂停背景音乐的播放。
|
||||||
<!--
|
|
||||||
### resumeBgm:恢复背景音乐
|
### resumeBgm:恢复背景音乐
|
||||||
|
|
||||||
使用`{"type": "resumeBgm"}`可以恢复背景音乐的播放。
|
使用`{"type": "resumeBgm"}`可以恢复背景音乐的播放。
|
||||||
|
|
||||||
**从V2.5.4开始不再支持此事件,请通过设置音量来达到此效果。**
|
|
||||||
-->
|
|
||||||
### loadBgm:预加载一个背景音乐
|
### loadBgm:预加载一个背景音乐
|
||||||
|
|
||||||
使用loadBgm可以预加载一个背景音乐。
|
使用loadBgm可以预加载一个背景音乐。
|
||||||
|
|||||||
@ -5,7 +5,7 @@ grammar MotaAction;
|
|||||||
|
|
||||||
//事件 事件编辑器入口之一
|
//事件 事件编辑器入口之一
|
||||||
event_m
|
event_m
|
||||||
: '事件' BGNL? Newline '覆盖触发器' Bool '启用' Bool '通行状态' B_0_List '动画' Bool '显伤' Bool BGNL? Newline action+ BEND
|
: '事件' BGNL? Newline '覆盖触发器' Bool '启用' Bool '通行状态' B_0_List '显伤' Bool BGNL? Newline action+ BEND
|
||||||
|
|
||||||
|
|
||||||
/* event_m
|
/* event_m
|
||||||
@ -17,11 +17,10 @@ var code = {
|
|||||||
'trigger': Bool_0?'action':null,
|
'trigger': Bool_0?'action':null,
|
||||||
'enable': Bool_1,
|
'enable': Bool_1,
|
||||||
'noPass': B_0_List_0,
|
'noPass': B_0_List_0,
|
||||||
'animate': Bool_2,
|
'displayDamage': Bool_2,
|
||||||
'displayDamage': Bool_3,
|
|
||||||
'data': 'data_asdfefw'
|
'data': 'data_asdfefw'
|
||||||
}
|
}
|
||||||
if (!Bool_0 && Bool_1 && (B_0_List_0===null) && Bool_2 && Bool_3) code = 'data_asdfefw';
|
if (!Bool_0 && Bool_1 && (B_0_List_0===null) && Bool_2) code = 'data_asdfefw';
|
||||||
code=JSON.stringify(code,null,2).split('"data_asdfefw"').join('[\n'+action_0+']\n');
|
code=JSON.stringify(code,null,2).split('"data_asdfefw"').join('[\n'+action_0+']\n');
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
@ -1994,7 +1993,7 @@ ActionParser.prototype.parse = function (obj,type) {
|
|||||||
if(typeof(obj)===typeof('')) obj={'data':[obj]};
|
if(typeof(obj)===typeof('')) obj={'data':[obj]};
|
||||||
if(obj instanceof Array) obj={'data':obj};
|
if(obj instanceof Array) obj={'data':obj};
|
||||||
return MotaActionBlocks['event_m'].xmlText([
|
return MotaActionBlocks['event_m'].xmlText([
|
||||||
obj.trigger==='action',obj.enable,obj.noPass,obj.animate,obj.displayDamage,this.parseList(obj.data)
|
obj.trigger==='action',obj.enable,obj.noPass,obj.displayDamage,this.parseList(obj.data)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
case 'changeFloor':
|
case 'changeFloor':
|
||||||
|
|||||||
@ -263,6 +263,12 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
|||||||
"_range": "thiseval==null||(thiseval instanceof Array)",
|
"_range": "thiseval==null||(thiseval instanceof Array)",
|
||||||
"_data": "该图块的不可入方向\n可以在这里定义不能朝哪个方向进入该图块,可以达到悬崖之类的效果\n例如 [\"down\"] 代表不能从该图块的上方点朝向下进入此图块\n此值对背景层、事件层、前景层上的图块均有效"
|
"_data": "该图块的不可入方向\n可以在这里定义不能朝哪个方向进入该图块,可以达到悬崖之类的效果\n例如 [\"down\"] 代表不能从该图块的上方点朝向下进入此图块\n此值对背景层、事件层、前景层上的图块均有效"
|
||||||
},
|
},
|
||||||
|
"animate": {
|
||||||
|
"_leaf": true,
|
||||||
|
"_type": "textarea",
|
||||||
|
"_range": "thiseval==~~thiseval||thiseval==null",
|
||||||
|
"_data": "该图块的全局动画帧数。\n如果此项为null,则对于除了npc48外,使用素材默认帧数;npc48默认是1帧(即静止)。"
|
||||||
|
},
|
||||||
"faceIds": {
|
"faceIds": {
|
||||||
"_leaf": true,
|
"_leaf": true,
|
||||||
"_type": "textarea",
|
"_type": "textarea",
|
||||||
|
|||||||
@ -2639,7 +2639,7 @@ control.prototype.unLockControl = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
////// 播放背景音乐 //////
|
////// 播放背景音乐 //////
|
||||||
control.prototype.playBgm = function (bgm) {
|
control.prototype.playBgm = function (bgm, startTime) {
|
||||||
if (main.mode!='play')return;
|
if (main.mode!='play')return;
|
||||||
// 音频不存在
|
// 音频不存在
|
||||||
if (!core.isset(core.material.bgms[bgm])) return;
|
if (!core.isset(core.material.bgms[bgm])) return;
|
||||||
@ -2657,14 +2657,6 @@ control.prototype.playBgm = function (bgm) {
|
|||||||
}
|
}
|
||||||
this.setMusicBtn();
|
this.setMusicBtn();
|
||||||
|
|
||||||
/*
|
|
||||||
// 延迟播放
|
|
||||||
if (core.material.bgms[bgm] == 'loading') {
|
|
||||||
core.material.bgms[bgm] = 'starting';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 缓存BGM
|
// 缓存BGM
|
||||||
core.loader.loadBgm(bgm);
|
core.loader.loadBgm(bgm);
|
||||||
@ -2678,7 +2670,7 @@ control.prototype.playBgm = function (bgm) {
|
|||||||
}
|
}
|
||||||
// 播放当前BGM
|
// 播放当前BGM
|
||||||
core.material.bgms[bgm].volume = core.musicStatus.volume;
|
core.material.bgms[bgm].volume = core.musicStatus.volume;
|
||||||
core.material.bgms[bgm].currentTime = 0;
|
core.material.bgms[bgm].currentTime = startTime || 0;
|
||||||
core.material.bgms[bgm].play();
|
core.material.bgms[bgm].play();
|
||||||
core.musicStatus.playingBgm = bgm;
|
core.musicStatus.playingBgm = bgm;
|
||||||
core.musicStatus.lastBgm = bgm;
|
core.musicStatus.lastBgm = bgm;
|
||||||
|
|||||||
@ -962,7 +962,6 @@ events.prototype.doAction = function() {
|
|||||||
this.doAction();
|
this.doAction();
|
||||||
break
|
break
|
||||||
case "loadBgm":
|
case "loadBgm":
|
||||||
if (core.platform.isPC)
|
|
||||||
core.loadBgm(data.name);
|
core.loadBgm(data.name);
|
||||||
this.doAction();
|
this.doAction();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -64,6 +64,7 @@ items.prototype.getItemEffectTip = function(itemId) {
|
|||||||
items.prototype._useItemEffect = function (itemId) {
|
items.prototype._useItemEffect = function (itemId) {
|
||||||
if (itemId in this.useItemEffect) {
|
if (itemId in this.useItemEffect) {
|
||||||
try {
|
try {
|
||||||
|
var ratio = parseInt(core.status.thisMap.item_ratio) || 1;
|
||||||
eval(this.useItemEffect[itemId]);
|
eval(this.useItemEffect[itemId]);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
@ -171,7 +172,7 @@ items.prototype.setItem = function (itemId, itemNum) {
|
|||||||
////// 删除某个物品 //////
|
////// 删除某个物品 //////
|
||||||
items.prototype.removeItem = function (itemId, itemNum) {
|
items.prototype.removeItem = function (itemId, itemNum) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
if (!core.isset(core.status.hero)) return null;
|
||||||
itemNum = itemNum || 1;
|
if (!core.isset(itemNum)) itemNum = 1;
|
||||||
if (!core.hasItem(itemId)) return false;
|
if (!core.hasItem(itemId)) return false;
|
||||||
var itemCls = core.material.items[itemId].cls;
|
var itemCls = core.material.items[itemId].cls;
|
||||||
core.status.hero.items[itemCls][itemId]-=itemNum;
|
core.status.hero.items[itemCls][itemId]-=itemNum;
|
||||||
@ -186,7 +187,7 @@ items.prototype.removeItem = function (itemId, itemNum) {
|
|||||||
////// 增加某个物品的个数 //////
|
////// 增加某个物品的个数 //////
|
||||||
items.prototype.addItem = function (itemId, itemNum) {
|
items.prototype.addItem = function (itemId, itemNum) {
|
||||||
if (!core.isset(core.status.hero)) return null;
|
if (!core.isset(core.status.hero)) return null;
|
||||||
itemNum = itemNum || 1;
|
if (!core.isset(itemNum)) itemNum = 1;
|
||||||
var itemData = core.material.items[itemId];
|
var itemData = core.material.items[itemId];
|
||||||
var itemCls = itemData.cls;
|
var itemCls = itemData.cls;
|
||||||
if (itemCls == 'items') return;
|
if (itemCls == 'items') return;
|
||||||
|
|||||||
@ -254,6 +254,11 @@ loader.prototype.freeBgm = function (name) {
|
|||||||
}, 3000);
|
}, 3000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loader.prototype._preloadBgm = function (bgm) {
|
||||||
|
bgm.volume = 0;
|
||||||
|
bgm.play();
|
||||||
|
}
|
||||||
|
|
||||||
loader.prototype.loadBgm = function (name) {
|
loader.prototype.loadBgm = function (name) {
|
||||||
if (!core.isset(core.material.bgms[name])) return;
|
if (!core.isset(core.material.bgms[name])) return;
|
||||||
// 如果没开启音乐,则不预加载
|
// 如果没开启音乐,则不预加载
|
||||||
@ -265,7 +270,8 @@ loader.prototype.loadBgm = function (name) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// 预加载BGM
|
// 预加载BGM
|
||||||
core.material.bgms[name].load();
|
this._preloadBgm(core.material.bgms[name]);
|
||||||
|
// core.material.bgms[name].load();
|
||||||
// 清理尾巴
|
// 清理尾巴
|
||||||
if (core.musicStatus.cachedBgms.length == core.musicStatus.cachedBgmCount) {
|
if (core.musicStatus.cachedBgms.length == core.musicStatus.cachedBgmCount) {
|
||||||
this.freeBgm(core.musicStatus.cachedBgms.pop());
|
this.freeBgm(core.musicStatus.cachedBgms.pop());
|
||||||
|
|||||||
22
libs/maps.js
22
libs/maps.js
@ -98,6 +98,19 @@ maps.prototype.initBlock = function (x, y, id) {
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maps.prototype._getAnimateFrames = function (cls, useOriginValue) {
|
||||||
|
if (cls=='enemys' || cls=='npcs') {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if (cls == 'animates' || cls == 'enemy48') {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
if (cls == 'npc48') {
|
||||||
|
return useOriginValue? 4 : 1;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
////// 添加一些信息到block上 //////
|
////// 添加一些信息到block上 //////
|
||||||
maps.prototype.addInfo = function (block) {
|
maps.prototype.addInfo = function (block) {
|
||||||
if (core.isset(block.event)) {
|
if (core.isset(block.event)) {
|
||||||
@ -113,12 +126,7 @@ maps.prototype.addInfo = function (block) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!core.isset(block.event.animate)) {
|
if (!core.isset(block.event.animate)) {
|
||||||
if (block.event.cls=='enemys' || block.event.cls=='npcs') {
|
block.event.animate = this._getAnimateFrames(block.event.cls, false);
|
||||||
block.event.animate = 2;
|
|
||||||
}
|
|
||||||
if (block.event.cls == 'animates' || block.event.cls == 'enemy48' || block.event.cls == 'npc48') {
|
|
||||||
block.event.animate = 4;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
block.event.height = 32;
|
block.event.height = 32;
|
||||||
if (block.event.cls == 'enemy48' || block.event.cls == 'npc48')
|
if (block.event.cls == 'enemy48' || block.event.cls == 'npc48')
|
||||||
@ -1057,7 +1065,7 @@ maps.prototype.moveBlock = function(x,y,steps,time,keep,callback) {
|
|||||||
destY += core.utils.scan[t].y;
|
destY += core.utils.scan[t].y;
|
||||||
});
|
});
|
||||||
|
|
||||||
var animateValue = block.event.animate || 1, animateCurrent = isTileset?bx:0, animateTime = 0;
|
var animateValue = this._getAnimateFrames(block.event.cls, true), animateCurrent = isTileset?bx:0, animateTime = 0;
|
||||||
var blockCanvas = this.__initBlockCanvas(block, height, x, y);
|
var blockCanvas = this.__initBlockCanvas(block, height, x, y);
|
||||||
var headCanvas = blockCanvas.headCanvas, bodyCanvas = blockCanvas.bodyCanvas, damageCanvas = blockCanvas.damageCanvas;
|
var headCanvas = blockCanvas.headCanvas, bodyCanvas = blockCanvas.bodyCanvas, damageCanvas = blockCanvas.damageCanvas;
|
||||||
var opacity = 1;
|
var opacity = 1;
|
||||||
|
|||||||
22
libs/ui.js
22
libs/ui.js
@ -349,20 +349,18 @@ ui.prototype.getTitleAndIcon = function (content) {
|
|||||||
var id=null, name=null, image=null, icon=null, iconHeight=32, animate=null;
|
var id=null, name=null, image=null, icon=null, iconHeight=32, animate=null;
|
||||||
|
|
||||||
var getInfo = function (v) {
|
var getInfo = function (v) {
|
||||||
["enemy48", "enemys", "npc48", "npcs"].forEach(function (x) {
|
var number = core.maps.getNumberById(v);
|
||||||
if (core.isset(core.material.icons[x][v])) {
|
if (number>0) {
|
||||||
image = core.material.images[x];
|
var block = core.maps.initBlock(0,0,number);
|
||||||
icon = core.material.icons[x][v];
|
core.maps.addInfo(block);
|
||||||
if (x.indexOf("48")>=0) {
|
if (core.isset(block.event)) {
|
||||||
iconHeight = 48;
|
var cls = block.event.cls;
|
||||||
animate = 4;
|
image = core.material.images[cls];
|
||||||
}
|
icon = core.material.icons[cls][v];
|
||||||
else {
|
iconHeight = block.event.height;
|
||||||
iconHeight = 32;
|
animate = block.event.animate;
|
||||||
animate = 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (content.indexOf("\t[")==0 || content.indexOf("\\t[")==0) {
|
if (content.indexOf("\t[")==0 || content.indexOf("\\t[")==0) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user