show/hide Async
This commit is contained in:
parent
2a0568ae6c
commit
717efe7882
@ -483,13 +483,13 @@ return code;
|
|||||||
|
|
||||||
|
|
||||||
show_s
|
show_s
|
||||||
: '显示事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' Int? Newline
|
: '显示事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' Int? '不等待执行完毕' Bool? Newline
|
||||||
|
|
||||||
|
|
||||||
/* show_s
|
/* show_s
|
||||||
tooltip : show: 将禁用事件启用,楼层和动画时间可不填,xy可用逗号分隔表示多个点
|
tooltip : show: 将禁用事件启用,楼层和动画时间可不填,xy可用逗号分隔表示多个点
|
||||||
helpUrl : https://h5mota.com/games/template/docs/#/event?id=show%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E7%A6%81%E7%94%A8%E4%BA%8B%E4%BB%B6%E5%90%AF%E7%94%A8
|
helpUrl : https://h5mota.com/games/template/docs/#/event?id=show%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E7%A6%81%E7%94%A8%E4%BA%8B%E4%BB%B6%E5%90%AF%E7%94%A8
|
||||||
default : ["","","",500]
|
default : ["","","",500,false]
|
||||||
colour : this.eventColor
|
colour : this.eventColor
|
||||||
var floorstr = '';
|
var floorstr = '';
|
||||||
if (EvalString_0 && EvalString_1) {
|
if (EvalString_0 && EvalString_1) {
|
||||||
@ -510,18 +510,19 @@ if (EvalString_0 && EvalString_1) {
|
|||||||
}
|
}
|
||||||
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
||||||
Int_0 = Int_0 ?(', "time": '+Int_0):'';
|
Int_0 = Int_0 ?(', "time": '+Int_0):'';
|
||||||
var code = '{"type": "show"'+floorstr+IdString_0+''+Int_0+'},\n';
|
Bool_0 = Bool_0 ?', "async": true':'';
|
||||||
|
var code = '{"type": "show"'+floorstr+IdString_0+''+Int_0+Bool_0+'},\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
hide_s
|
hide_s
|
||||||
: '隐藏事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' Int? Newline
|
: '隐藏事件' 'x' EvalString? ',' 'y' EvalString? '楼层' IdString? '动画时间' Int? '不等待执行完毕' Bool? Newline
|
||||||
|
|
||||||
|
|
||||||
/* hide_s
|
/* hide_s
|
||||||
tooltip : hide: 将一个启用事件禁用,所有参数均可不填,代表禁用事件自身,xy可用逗号分隔表示多个点
|
tooltip : hide: 将一个启用事件禁用,所有参数均可不填,代表禁用事件自身,xy可用逗号分隔表示多个点
|
||||||
helpUrl : https://h5mota.com/games/template/docs/#/event?id=hide%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E5%90%AF%E7%94%A8%E4%BA%8B%E4%BB%B6%E7%A6%81%E7%94%A8
|
helpUrl : https://h5mota.com/games/template/docs/#/event?id=hide%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E5%90%AF%E7%94%A8%E4%BA%8B%E4%BB%B6%E7%A6%81%E7%94%A8
|
||||||
default : ["","","",500]
|
default : ["","","",500,false]
|
||||||
colour : this.eventColor
|
colour : this.eventColor
|
||||||
var floorstr = '';
|
var floorstr = '';
|
||||||
if (EvalString_0 && EvalString_1) {
|
if (EvalString_0 && EvalString_1) {
|
||||||
@ -542,7 +543,8 @@ if (EvalString_0 && EvalString_1) {
|
|||||||
}
|
}
|
||||||
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
IdString_0 = IdString_0 && (', "floorId": "'+IdString_0+'"');
|
||||||
Int_0 = Int_0 ?(', "time": '+Int_0):'';
|
Int_0 = Int_0 ?(', "time": '+Int_0):'';
|
||||||
var code = '{"type": "hide"'+floorstr+IdString_0+''+Int_0+'},\n';
|
Bool_0 = Bool_0 ?', "async": true':'';
|
||||||
|
var code = '{"type": "hide"'+floorstr+IdString_0+''+Int_0+Bool_0+'},\n';
|
||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
@ -1929,7 +1931,7 @@ ActionParser.prototype.parseAction = function() {
|
|||||||
y_str.push(t[1]);
|
y_str.push(t[1]);
|
||||||
})
|
})
|
||||||
this.next = MotaActionBlocks['show_s'].xmlText([
|
this.next = MotaActionBlocks['show_s'].xmlText([
|
||||||
x_str.join(','),y_str.join(','),data.floorId||'',data.time||0,this.next]);
|
x_str.join(','),y_str.join(','),data.floorId||'',data.time||0,data.async||false,this.next]);
|
||||||
break;
|
break;
|
||||||
case "hide": // 消失
|
case "hide": // 消失
|
||||||
data.loc=data.loc||[];
|
data.loc=data.loc||[];
|
||||||
@ -1941,7 +1943,7 @@ ActionParser.prototype.parseAction = function() {
|
|||||||
y_str.push(t[1]);
|
y_str.push(t[1]);
|
||||||
})
|
})
|
||||||
this.next = MotaActionBlocks['hide_s'].xmlText([
|
this.next = MotaActionBlocks['hide_s'].xmlText([
|
||||||
x_str.join(','),y_str.join(','),data.floorId||'',data.time||0,this.next]);
|
x_str.join(','),y_str.join(','),data.floorId||'',data.time||0,data.async||false,this.next]);
|
||||||
break;
|
break;
|
||||||
case "setBlock": // 设置图块
|
case "setBlock": // 设置图块
|
||||||
data.loc=data.loc||['',''];
|
data.loc=data.loc||['',''];
|
||||||
|
|||||||
@ -456,7 +456,8 @@ value为必填项,代表要修改到的结果。该项必须是个数值。
|
|||||||
{"type": "show", "loc": [3,6], "floorId": "MT1", "time": 500}, // 启用MT1层[3,6]位置事件,动画500ms
|
{"type": "show", "loc": [3,6], "floorId": "MT1", "time": 500}, // 启用MT1层[3,6]位置事件,动画500ms
|
||||||
{"type": "show", "loc": [3,6], "time": 500}, // 如果启用目标是当前层,则可以省略floorId项
|
{"type": "show", "loc": [3,6], "time": 500}, // 如果启用目标是当前层,则可以省略floorId项
|
||||||
{"type": "show", "loc": [3,6]}, // 如果不指定动画时间,则立刻显示,否则动画效果逐渐显示,time为动画时间
|
{"type": "show", "loc": [3,6]}, // 如果不指定动画时间,则立刻显示,否则动画效果逐渐显示,time为动画时间
|
||||||
{"type": "show", "loc": [[3,6],[2,9],[1,2]], "time": 500} // 我们也可以同时动画显示多个点。
|
{"type": "show", "loc": [[3,6],[2,9],[1,2]], "time": 500}, // 我们也可以同时动画显示多个点。
|
||||||
|
{"type": "show", "loc": [3,6], "time": 500, "async": true} // 可以使用异步动画效果
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -468,13 +469,15 @@ floorId为目标点的楼层,如果不是该楼层的事件(比如4楼小偷
|
|||||||
|
|
||||||
time为动画效果时间,如果指定了某个大于0的数,则会以动画效果慢慢从无到有显示,动画时间为该数值;如果不指定该选项则无动画直接立刻显示。
|
time为动画效果时间,如果指定了某个大于0的数,则会以动画效果慢慢从无到有显示,动画时间为该数值;如果不指定该选项则无动画直接立刻显示。
|
||||||
|
|
||||||
|
async可选,如果为true则会异步执行(即不等待当前事件执行完毕,立刻执行下一个事件)。
|
||||||
|
|
||||||
!> **要注意的是,调用show事件后只是让该事件从禁用状态变成启用,从不可见不可交互变成可见可交互,但本身不会去执行该点的事件。**
|
!> **要注意的是,调用show事件后只是让该事件从禁用状态变成启用,从不可见不可交互变成可见可交互,但本身不会去执行该点的事件。**
|
||||||
|
|
||||||
### hide:将一个启用事件禁用
|
### hide:将一个启用事件禁用
|
||||||
|
|
||||||
`{"type":"hide"}`和show刚好相反,它会让一个已经启用的事件被禁用。
|
`{"type":"hide"}`和show刚好相反,它会让一个已经启用的事件被禁用。
|
||||||
|
|
||||||
其参数和show也完全相同,loc指定事件的位置,floorId为楼层(同层可忽略),time指定的话事件会以动画效果从有到无慢慢消失。
|
其参数和show也完全相同,loc指定事件的位置,floorId为楼层(同层可忽略),time指定的话事件会以动画效果从有到无慢慢消失,async代表是否是异步效果。
|
||||||
|
|
||||||
loc同样可以简单的写[x,y]表示单个点,或二维数组[[x1,y1],[x2,y2],...]表示多个点。
|
loc同样可以简单的写[x,y]表示单个点,或二维数组[[x1,y1],[x2,y2],...]表示多个点。
|
||||||
|
|
||||||
@ -492,7 +495,7 @@ NPC对话事件结束后如果需要NPC消失也需要调用 `{"type": "hide"}`
|
|||||||
{"type": "hide", "loc": [[3,6],[2,9],[1,2]], "time": 500}, // 也可以同时指定多个点消失
|
{"type": "hide", "loc": [[3,6],[2,9],[1,2]], "time": 500}, // 也可以同时指定多个点消失
|
||||||
{"type": "hide", "time": 500}, // 如果不指定loc选项则默认为当前点, 例如这个就是500ms消失当前对话的NPC
|
{"type": "hide", "time": 500}, // 如果不指定loc选项则默认为当前点, 例如这个就是500ms消失当前对话的NPC
|
||||||
{"type": "hide"}, // 无动画将当前事件禁用,常常适用于某个空地点(触发陷阱事件、触发机关门这种)
|
{"type": "hide"}, // 无动画将当前事件禁用,常常适用于某个空地点(触发陷阱事件、触发机关门这种)
|
||||||
|
{"type": "hide", "loc": [3,6], "time": 500, "async": true} // 可以使用异步动画效果
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -450,13 +450,16 @@ events.prototype.doAction = function() {
|
|||||||
&& (typeof data.loc[1] == 'number' || typeof data.loc[1] == 'string'))
|
&& (typeof data.loc[1] == 'number' || typeof data.loc[1] == 'string'))
|
||||||
data.loc = [[core.calValue(data.loc[0]), core.calValue(data.loc[1])]];
|
data.loc = [[core.calValue(data.loc[0]), core.calValue(data.loc[1])]];
|
||||||
if (core.isset(data.time) && data.time>0 && (!core.isset(data.floorId) || data.floorId==core.status.floorId)) {
|
if (core.isset(data.time) && data.time>0 && (!core.isset(data.floorId) || data.floorId==core.status.floorId)) {
|
||||||
|
if (data.async) {
|
||||||
|
core.animateBlock(data.loc, 'show', data.time);
|
||||||
|
this.doAction();
|
||||||
|
}
|
||||||
|
else {
|
||||||
core.animateBlock(data.loc,'show', data.time, function () {
|
core.animateBlock(data.loc,'show', data.time, function () {
|
||||||
data.loc.forEach(function (t) {
|
|
||||||
core.showBlock(t[0],t[1],data.floorId);
|
|
||||||
})
|
|
||||||
core.events.doAction();
|
core.events.doAction();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
data.loc.forEach(function (t) {
|
data.loc.forEach(function (t) {
|
||||||
core.showBlock(t[0],t[1],data.floorId);
|
core.showBlock(t[0],t[1],data.floorId);
|
||||||
@ -473,14 +476,17 @@ events.prototype.doAction = function() {
|
|||||||
if (core.isset(data.time) && data.time>0 && (!core.isset(data.floorId) || data.floorId==core.status.floorId)) {
|
if (core.isset(data.time) && data.time>0 && (!core.isset(data.floorId) || data.floorId==core.status.floorId)) {
|
||||||
data.loc.forEach(function (t) {
|
data.loc.forEach(function (t) {
|
||||||
core.hideBlock(t[0],t[1],data.floorId);
|
core.hideBlock(t[0],t[1],data.floorId);
|
||||||
})
|
});
|
||||||
core.animateBlock(data.loc,'hide',data.time, function () {
|
if (data.async) {
|
||||||
data.loc.forEach(function (t) {
|
core.animateBlock(data.loc, 'hide', data.time);
|
||||||
core.removeBlock(t[0],t[1],data.floorId)
|
this.doAction();
|
||||||
})
|
}
|
||||||
|
else {
|
||||||
|
core.animateBlock(data.loc,'hide', data.time, function () {
|
||||||
core.events.doAction();
|
core.events.doAction();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
data.loc.forEach(function (t) {
|
data.loc.forEach(function (t) {
|
||||||
core.removeBlock(t[0],t[1],data.floorId)
|
core.removeBlock(t[0],t[1],data.floorId)
|
||||||
|
|||||||
42
libs/maps.js
42
libs/maps.js
@ -1032,8 +1032,6 @@ maps.prototype.jumpBlock = function(sx,sy,ex,ey,time,keep,callback) {
|
|||||||
maps.prototype.animateBlock = function (loc,type,time,callback) {
|
maps.prototype.animateBlock = function (loc,type,time,callback) {
|
||||||
if (type!='hide') type='show';
|
if (type!='hide') type='show';
|
||||||
|
|
||||||
core.clearMap('route');
|
|
||||||
|
|
||||||
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
if (typeof loc[0] == 'number' && typeof loc[1] == 'number')
|
||||||
loc = [loc];
|
loc = [loc];
|
||||||
|
|
||||||
@ -1076,30 +1074,50 @@ maps.prototype.animateBlock = function (loc,type,time,callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// core.status.replay.animate=true;
|
// core.status.replay.animate=true;
|
||||||
|
var clear = function () {
|
||||||
|
list.forEach(function (t) {
|
||||||
|
core.clearMap('route', t.x*32, t.y*32+32-t.height, 32, t.height);
|
||||||
|
})
|
||||||
|
}
|
||||||
var draw = function () {
|
var draw = function () {
|
||||||
list.forEach(function (t) {
|
list.forEach(function (t) {
|
||||||
core.canvas.route.drawImage(t.image, t.bx*32, t.by*t.height, 32, t.height, t.x*32, t.y*32+32-t.height, 32, t.height);
|
core.canvas.route.drawImage(t.image, t.bx*32, t.by*t.height, 32, t.height, t.x*32, t.y*32+32-t.height, 32, t.height);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
var opacityVal = 0;
|
var alpha = 0;
|
||||||
if (type=='hide') opacityVal=1;
|
if (type=='hide') alpha=1;
|
||||||
|
|
||||||
core.setOpacity('route', opacityVal);
|
core.setAlpha('route', alpha);
|
||||||
draw();
|
draw();
|
||||||
|
|
||||||
var animate = window.setInterval(function () {
|
var animate = window.setInterval(function () {
|
||||||
if (type=='show') opacityVal += 0.1;
|
if (type=='show') alpha += 0.1;
|
||||||
else opacityVal -= 0.1;
|
else alpha -= 0.1;
|
||||||
core.setOpacity('route', opacityVal);
|
clear();
|
||||||
if (opacityVal >=1 || opacityVal<=0) {
|
if (alpha >=1 || alpha<=0) {
|
||||||
|
delete core.animateFrame.asyncId[animate];
|
||||||
clearInterval(animate);
|
clearInterval(animate);
|
||||||
core.clearMap('route');
|
core.setAlpha('curtain', 1);
|
||||||
core.setOpacity('route', 1);
|
if (type == 'show') {
|
||||||
// core.status.replay.animate=false;
|
loc.forEach(function (t) {
|
||||||
|
core.showBlock(t[0],t[1],data.floorId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
loc.forEach(function (t) {
|
||||||
|
core.removeBlock(t[0],t[1],data.floorId);
|
||||||
|
});
|
||||||
|
}
|
||||||
if (core.isset(callback)) callback();
|
if (core.isset(callback)) callback();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
core.setAlpha('route', alpha);
|
||||||
|
draw();
|
||||||
|
}
|
||||||
}, time / 10 / core.status.replay.speed);
|
}, time / 10 / core.status.replay.speed);
|
||||||
|
|
||||||
|
core.animateFrame.asyncId[animate] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 将某个块从禁用变成启用状态 //////
|
////// 将某个块从禁用变成启用状态 //////
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user