显示文本立绘块
This commit is contained in:
parent
5e74584426
commit
934aa025f8
@ -595,6 +595,7 @@ return JSON.stringify(code);
|
|||||||
action
|
action
|
||||||
: text_0_s
|
: text_0_s
|
||||||
| text_1_s
|
| text_1_s
|
||||||
|
| text_2_s
|
||||||
| comment_s
|
| comment_s
|
||||||
| autoText_s
|
| autoText_s
|
||||||
| scrollText_s
|
| scrollText_s
|
||||||
@ -754,6 +755,84 @@ var code = '"'+title+EvalString_2+EvalString_3+'",\n';
|
|||||||
return code;
|
return code;
|
||||||
*/;
|
*/;
|
||||||
|
|
||||||
|
text_2_s
|
||||||
|
: '标题' EvalString? '图像' EvalString? '对话框效果' EvalString? ':' EvalString BGNL? Newline textDrawingList* Newline
|
||||||
|
|
||||||
|
|
||||||
|
/* text_2_s
|
||||||
|
tooltip : text:显示一段文字(剧情),选项较多请右键点击帮助
|
||||||
|
helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89
|
||||||
|
doubleclicktext : EvalString_3
|
||||||
|
allIds : ['EvalString_1']
|
||||||
|
default : ["小妖精","fairy","","欢迎使用事件编辑器(双击方块进入多行编辑)",null]
|
||||||
|
var title='';
|
||||||
|
if (EvalString_0==''){
|
||||||
|
if (EvalString_1=='' )title='';
|
||||||
|
else title='\\t['+EvalString_1+']';
|
||||||
|
} else {
|
||||||
|
if (EvalString_1=='')title='\\t['+EvalString_0+']';
|
||||||
|
else title='\\t['+EvalString_0+','+EvalString_1+']';
|
||||||
|
}
|
||||||
|
if(EvalString_2 && !(/^(up|center|down|hero|this)(,(hero|null|\d+,\d+|\d+))?$/.test(EvalString_2))) {
|
||||||
|
throw new Error('对话框效果的用法请右键点击帮助');
|
||||||
|
}
|
||||||
|
EvalString_2 = EvalString_2 && ('\\b['+EvalString_2+']');
|
||||||
|
var code = '"'+title+EvalString_2+textDrawingList_0.replace(/\s/g, '')+EvalString_3+'",\n';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
|
textDrawingList
|
||||||
|
: textDrawing
|
||||||
|
| textDrawingEmpty;
|
||||||
|
|
||||||
|
|
||||||
|
textDrawing
|
||||||
|
: '立绘' EvalString '翻转' Reverse_List '绘制坐标' 'x' IntString 'y' IntString '宽' IntString? '高' IntString? BGNL? Newline
|
||||||
|
'裁剪坐标' 'x' IntString? 'y' IntString? '宽' IntString? '高' IntString? '不透明度' EvalString? '旋转角度' IntString?
|
||||||
|
|
||||||
|
/* textDrawing
|
||||||
|
tooltip : 立绘
|
||||||
|
helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87
|
||||||
|
default : ["fairy.png","null","0","0","","","","","","","",""]
|
||||||
|
colour : this.subColor
|
||||||
|
allImages : ['EvalString_0']
|
||||||
|
if (Reverse_List_0 && Reverse_List_0 != 'null') EvalString_0 += Reverse_List_0;
|
||||||
|
var list = [EvalString_0, IntString_0, IntString_1];
|
||||||
|
if (IntString_2 || IntString_3) {
|
||||||
|
if (list.length != 3 || !IntString_2 || !IntString_3) {
|
||||||
|
throw "绘制的宽和高需同时设置";
|
||||||
|
}
|
||||||
|
list.push(IntString_2);
|
||||||
|
list.push(IntString_3);
|
||||||
|
}
|
||||||
|
if (IntString_4 || IntString_5 || IntString_6 || IntString_7) {
|
||||||
|
if (list.length != 5) throw "如设置裁剪区域,请先设置绘制区域的宽高";
|
||||||
|
if (!IntString_4 || !IntString_5 || !IntString_6 || !IntString_7) {
|
||||||
|
throw "如设置裁剪区域,请同时设置全部的裁剪坐标和宽高";
|
||||||
|
}
|
||||||
|
list.splice(1, 0, IntString_4, IntString_5, IntString_6, IntString_7);
|
||||||
|
}
|
||||||
|
if (EvalString_1) {
|
||||||
|
if (list.length != 9) throw "如设置不透明度,需填满所有坐标和宽高";
|
||||||
|
var opacity = parseFloat(EvalString_1);
|
||||||
|
if (isNaN(opacity) || opacity < 0 || opacity > 1) throw "不合法的不透明度,必须是0到1之间"
|
||||||
|
list.push(opacity);
|
||||||
|
}
|
||||||
|
if (IntString_8) {
|
||||||
|
if (list.length != 10) throw "如设置旋转角度,需填满所有坐标和宽高,以及不透明度";
|
||||||
|
list.push(IntString_8);
|
||||||
|
}
|
||||||
|
return "\\f[" + list.join(",")+"]";
|
||||||
|
*/;
|
||||||
|
|
||||||
|
textDrawingEmpty
|
||||||
|
: Newline
|
||||||
|
|
||||||
|
/* textDrawingEmpty
|
||||||
|
var code = '';
|
||||||
|
return code;
|
||||||
|
*/;
|
||||||
|
|
||||||
comment_s
|
comment_s
|
||||||
: '添加注释' ':' EvalString Newline
|
: '添加注释' ':' EvalString Newline
|
||||||
|
|
||||||
|
|||||||
@ -210,7 +210,38 @@ ActionParser.prototype.parseAction = function() {
|
|||||||
return;
|
return;
|
||||||
case "text": // 文字/对话
|
case "text": // 文字/对话
|
||||||
var info = this.getTitleAndPosition(data.text);
|
var info = this.getTitleAndPosition(data.text);
|
||||||
if (info[0] || info[1] || info[2]) {
|
var textDrawing = [];
|
||||||
|
info[3] = (info[3] || "").replace(/(\f|\\f)\[(.*?)]/g, function (text, sympol, str) {
|
||||||
|
var ss = str.split(",");
|
||||||
|
if (ss.length == 3 || ss.length == 5 || ss.length >=9) {
|
||||||
|
var swap = function (i, j) { var x = ss[i]; ss[i] = ss[j]; ss[j] = x;}
|
||||||
|
if (ss.length >= 9) {
|
||||||
|
swap(1,5); swap(2,6); swap(3,7); swap(4,8);
|
||||||
|
}
|
||||||
|
textDrawing.push(ss);
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
});
|
||||||
|
if (textDrawing.length > 0) {
|
||||||
|
var buildTextDrawing = function (obj) {
|
||||||
|
if(!obj) obj=[];
|
||||||
|
var text_choices = null;
|
||||||
|
for(var ii=obj.length-1,choice;choice=obj[ii];ii--) {
|
||||||
|
var reverse = 'null';
|
||||||
|
if (choice[0].endsWith(':o') || choice[0].endsWith(':x') || choice[0].endsWith(':y')) {
|
||||||
|
reverse = choice[0].substring(choice[0].length - 2);
|
||||||
|
choice[0] = choice[0].substring(0, choice[0].length - 2);
|
||||||
|
}
|
||||||
|
text_choices=MotaActionBlocks['textDrawing'].xmlText([
|
||||||
|
choice[0], reverse, choice[1], choice[2], choice[3], choice[4], choice[5], choice[6],
|
||||||
|
choice[7], choice[8], choice[9], choice[10], text_choices]);
|
||||||
|
}
|
||||||
|
return text_choices;
|
||||||
|
}
|
||||||
|
this.next = MotaActionBlocks['text_2_s'].xmlText([
|
||||||
|
info[0], info[1], info[2], info[3], buildTextDrawing(textDrawing), this.next
|
||||||
|
]);
|
||||||
|
} else if (info[0] || info[1] || info[2]) {
|
||||||
this.next = MotaActionBlocks['text_1_s'].xmlText([
|
this.next = MotaActionBlocks['text_1_s'].xmlText([
|
||||||
info[0], info[1], info[2], info[3], this.next]);
|
info[0], info[1], info[2], info[3], this.next]);
|
||||||
}
|
}
|
||||||
@ -1154,7 +1185,7 @@ MotaActionFunctions.JsonEvalString_pre = function (JsonEvalString) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MotaActionFunctions.IntString_pre = function (IntString) {
|
MotaActionFunctions.IntString_pre = function (IntString) {
|
||||||
if (!/^\d*$/.test(IntString)) throw new Error('此项必须是整数或不填');
|
if (!/^[+-]?\d*$/.test(IntString)) throw new Error('此项必须是整数或不填');
|
||||||
return IntString;
|
return IntString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -87,6 +87,7 @@ editor_blocklyconfig=(function(){
|
|||||||
'显示文字':[
|
'显示文字':[
|
||||||
MotaActionBlocks['text_0_s'].xmlText(),
|
MotaActionBlocks['text_0_s'].xmlText(),
|
||||||
MotaActionBlocks['text_1_s'].xmlText(),
|
MotaActionBlocks['text_1_s'].xmlText(),
|
||||||
|
MotaActionFunctions.actionParser.parseList("\t[小妖精,fairy]\f[fairy.png,0,0]欢迎使用事件编辑器(双击方块进入多行编辑)"),
|
||||||
MotaActionBlocks['comment_s'].xmlText(),
|
MotaActionBlocks['comment_s'].xmlText(),
|
||||||
MotaActionBlocks['autoText_s'].xmlText(),
|
MotaActionBlocks['autoText_s'].xmlText(),
|
||||||
MotaActionBlocks['scrollText_s'].xmlText(),
|
MotaActionBlocks['scrollText_s'].xmlText(),
|
||||||
|
|||||||
@ -1347,9 +1347,11 @@ ui.prototype._drawTextBox_drawImages = function (content) {
|
|||||||
core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]));
|
core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]));
|
||||||
else if (ss.length==5)
|
else if (ss.length==5)
|
||||||
core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]));
|
core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]));
|
||||||
else if (ss.length==9 || ss.length==10) {
|
else if (ss.length >= 9) {
|
||||||
if (ss.length==10) core.setAlpha('ui', parseFloat(ss[9]));
|
if (ss.length >= 10) core.setAlpha('ui', parseFloat(ss[9]));
|
||||||
core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]), parseFloat(ss[5]), parseFloat(ss[6]), parseFloat(ss[7]), parseFloat(ss[8]));
|
var angle = (parseFloat(ss[10]) || 0) * Math.PI / 180;
|
||||||
|
core.drawImage('ui', ss[0], parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]),
|
||||||
|
parseFloat(ss[5]), parseFloat(ss[6]), parseFloat(ss[7]), parseFloat(ss[8]), angle);
|
||||||
core.setAlpha('ui', 1);
|
core.setAlpha('ui', 1);
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user