drawAnimate alignWindow
This commit is contained in:
parent
16ed7a03ef
commit
3b50761098
@ -1625,7 +1625,7 @@ core.drawBoxAnimate()
|
||||
绘制UI层的box动画,如怪物手册和对话框中的帧动画等。
|
||||
|
||||
|
||||
core.drawAnimate(name, x, y, callback)
|
||||
core.drawAnimate(name, x, y, alignWindow, callback)
|
||||
绘制一个动画。name为动画名,x和y为绘制的基准坐标,callback为绘制完毕的回调函数。
|
||||
此函数将播放动画音效,并异步开始绘制该动画。
|
||||
此函数会返回一个动画id,可以通过core.stopAnimate()立刻停止该动画的播放。
|
||||
|
||||
@ -489,7 +489,7 @@ core.maps.removeBlockByIds(floorId, ids)
|
||||
根据索引删除或禁用若干块。
|
||||
|
||||
|
||||
core.maps.drawAnimate(name, x, y, callback)
|
||||
core.maps.drawAnimate(name, x, y, alignWindow, callback)
|
||||
播放一段动画,name为动画名(需在全塔属性注册),x和y为坐标(0-12之间),callback可选,为播放完毕的回调函数。
|
||||
播放过程是异步的,如需等待播放完毕请使用insertAction插入一条type:waitAsync事件。
|
||||
此函数将随机返回一个数字id,为此异步动画的唯一标识符。
|
||||
|
||||
@ -1624,7 +1624,7 @@ core.drawBoxAnimate()
|
||||
绘制UI层的box动画,如怪物手册和对话框中的帧动画等。
|
||||
|
||||
|
||||
core.drawAnimate(name, x, y, callback)
|
||||
core.drawAnimate(name, x, y, alignWindow, callback)
|
||||
绘制一个动画。name为动画名,x和y为绘制的基准坐标,callback为绘制完毕的回调函数。
|
||||
此函数将播放动画音效,并异步开始绘制该动画。
|
||||
此函数会返回一个动画id,可以通过core.stopAnimate()立刻停止该动画的播放。
|
||||
|
||||
@ -1355,7 +1355,7 @@ return code;
|
||||
*/;
|
||||
|
||||
animate_s
|
||||
: '显示动画' IdString '位置' EvalString? '不等待执行完毕' Bool Newline
|
||||
: '显示动画' IdString '位置' EvalString? '相对窗口坐标' Bool '不等待执行完毕' Bool Newline
|
||||
|
||||
|
||||
/* animate_s
|
||||
@ -1374,8 +1374,9 @@ if (EvalString_0) {
|
||||
throw new Error('此处只能填hero或者1,2形式的位置,或者不填代表当前事件点');
|
||||
}
|
||||
}
|
||||
var async = Bool_0?', "async": true':'';
|
||||
var code = '{"type": "animate", "name": "'+IdString_0+'"'+EvalString_0+async+'},\n';
|
||||
Bool_0 = Bool_0?', "alignWindow": true':'';
|
||||
var async = Bool_1?', "async": true':'';
|
||||
var code = '{"type": "animate", "name": "'+IdString_0+'"'+EvalString_0+Bool_0+async+'},\n';
|
||||
return code;
|
||||
*/;
|
||||
|
||||
@ -3282,7 +3283,7 @@ ActionParser.prototype.parseAction = function() {
|
||||
var animate_loc = data.loc||'';
|
||||
if(animate_loc && animate_loc!=='hero')animate_loc = animate_loc[0]+','+animate_loc[1];
|
||||
this.next = MotaActionBlocks['animate_s'].xmlText([
|
||||
data.name,animate_loc,data.async||false,this.next]);
|
||||
data.name,animate_loc,data.alignWindow||false,data.async||false,this.next]);
|
||||
break;
|
||||
case "setViewport": // 设置视角
|
||||
data.loc = data.loc||['',''];
|
||||
|
||||
@ -1333,7 +1333,7 @@ events.prototype._action_animate = function (data, x, y, prefix) {
|
||||
this.__action_doAsyncFunc(data.async, core.drawHeroAnimate, data.name);
|
||||
} else {
|
||||
data.loc = this.__action_getLoc(data.loc, x, y, prefix);
|
||||
this.__action_doAsyncFunc(data.async, core.drawAnimate, data.name, data.loc[0], data.loc[1]);
|
||||
this.__action_doAsyncFunc(data.async, core.drawAnimate, data.name, data.loc[0], data.loc[1], data.alignWindow);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2055,7 +2055,7 @@ maps.prototype.drawBoxAnimate = function () {
|
||||
}
|
||||
|
||||
////// 绘制动画 //////
|
||||
maps.prototype.drawAnimate = function (name, x, y, callback) {
|
||||
maps.prototype.drawAnimate = function (name, x, y, alignWindow, callback) {
|
||||
name = core.getMappedName(name);
|
||||
|
||||
// 正在播放录像:不显示动画
|
||||
@ -2066,6 +2066,10 @@ maps.prototype.drawAnimate = function (name, x, y, callback) {
|
||||
|
||||
// 开始绘制
|
||||
var animate = core.material.animates[name], centerX = 32 * x + 16, centerY = 32 * y + 16;
|
||||
if (alignWindow) {
|
||||
centerX += core.bigmap.offsetX;
|
||||
centerY += core.bigmap.offsetY;
|
||||
}
|
||||
// 播放音效
|
||||
core.playSound(animate.se);
|
||||
|
||||
|
||||
2
runtime.d.ts
vendored
2
runtime.d.ts
vendored
@ -1203,7 +1203,7 @@ declare class maps {
|
||||
* @param callback 动画停止后的回调函数,可选
|
||||
* @returns 一个数字,可作为core.stopAnimate()的参数来立即停止播放(届时还可选择是否执行此次播放的回调函数)
|
||||
*/
|
||||
drawAnimate(name: string, x: number, y: number, callback?: () => void): number
|
||||
drawAnimate(name: string, x: number, y: number, alignWindow: boolean, callback?: () => void): number
|
||||
}
|
||||
|
||||
/** @file items.js 主要负责一切和道具相关的内容。 */
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
(已完成!) 1.(来自鹿神)门和像三种基础墙一样的墙应当提供一个“需要消耗多少把哪种钥匙、开关门分别播放什么音效”的属性,如[{"yellowKey": 2, "blueKey": 1}, "door.mp3", "close.mp3"],多种钥匙之间的关系可以为&&或||
|
||||
(已完成!) 2.(来自小艾)请求修复瞬移判定无视图块属性script项的bug
|
||||
3. 请求修复(如果还没修复)core.drawTip()不能使用系统图标和clear参数的bug,建议增加一个参数来表示多帧图块绘制第几帧(“UI绘制”类事件中的“绘制图标”同理),增加另一个参数来表示32×48图块绘制哪2/3,手册同理(目前统一绘制最上面2/3)
|
||||
4. 建议显示文章的\b[]提供top和bottom这两种新写法来实现在顶部或底部显示对话框,目前只有startText、firstArrive、eachArrive、useItemEvent和公共事件等没有当前点的事件中才能用up和down来临时实现这种效果,否则就得设置剧情文本的属性,这在频繁来回切换时是致命的,就像《无上之光》RMXP版地上40层一样
|
||||
(已完成!) 3. 请求修复(如果还没修复)core.drawTip()不能使用系统图标和clear参数的bug,建议增加一个参数来表示多帧图块绘制第几帧
|
||||
3.1 (“UI绘制”类事件中的“绘制图标”同理)
|
||||
(已完成!\b[up,null]可实现此效果) 4. 建议显示文章的\b[]提供top和bottom这两种新写法来实现在顶部或底部显示对话框,目前只有startText、firstArrive、eachArrive、useItemEvent和公共事件等没有当前点的事件中才能用up和down来临时实现这种效果,否则就得设置剧情文本的属性,这在频繁来回切换时是致命的,就像《无上之光》RMXP版地上40层一样
|
||||
5. 建议优化core.splitLines()来避免把单词打断和触犯标点禁则,如点号和右标号禁止用于行首,左标号禁止用于行尾
|
||||
6. core.drawAnimate()和对应的事件,建议增加一个boolean型参数来表示坐标是绝对坐标(即当前的实现)还是在视野中的相对坐标(以13*13为例相对坐标总是在0~12之间),以实现形如“在视野正中心播放某某动画”的需求(小地图可以写6,6,大地图怎么办)
|
||||
(已完成!) 6. core.drawAnimate()和对应的事件,建议增加一个boolean型参数来表示坐标是绝对坐标(即当前的实现)还是在视野中的相对坐标(以13*13为例相对坐标总是在0~12之间),以实现形如“在视野正中心播放某某动画”的需求(小地图可以写6,6,大地图怎么办)
|
||||
7. 建议把core.playBgm(bgm, startTime)的startTime参数在事件中也提供出来,以用于一些演出(比如适当的剧情处直接从高潮开始)。同理可以让“暂停背景音乐”记录下当前播放到了第几秒,并在“恢复背景音乐”中自动从这个秒数恢复。作者还可以手动配合音量渐变效果
|
||||
8. 系统设置菜单中“音量”和“步时”的点击区并不是根据文本长度自动适配的,这导致作者修改文本(包括但不限于翻译)后玩家难以找到准确的点击区,建议优化
|
||||
9. 建议给“显示选择项”、“显示确认框”、“等待用户操作”这三个事件添加一个“若多少毫秒内不响应则触发的分支”,用来实现一些如新新2的QTE,录像中可以记录“choice: timeout”、“confirm: timeout”和“wait: timeout”来表示触发了超时分支
|
||||
|
||||
Loading…
Reference in New Issue
Block a user