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