changeFont

This commit is contained in:
oc 2019-07-05 00:23:42 +08:00
parent d9b905c9ef
commit 3ba1ff07cf
6 changed files with 33 additions and 18 deletions

View File

@ -1742,7 +1742,7 @@ id可选为同时绘制的图标ID如果不为null则会同时绘制该图
core.drawText(content, callback) core.drawText(content, callback)
绘制一段文字。contents为一个字符串或一个字符串数组callback为全部绘制完毕的回调。 绘制一段文字。contents为一个字符串或一个字符串数组callback为全部绘制完毕的回调。
支持所有的文字效果(如\n${}\r\\i等也支持\t和\b的语法。 支持所有的文字效果(如\n${}\r\\i\\c\\d\\e等),也支持\t和\b的语法。
如果当前在事件处理中或录像回放中则会自动转成core.insertAction处理。 如果当前在事件处理中或录像回放中则会自动转成core.insertAction处理。
不建议使用该函数如有绘制文字的需求请尽量使用core.insertAction()插入剧情文本事件。 不建议使用该函数如有绘制文字的需求请尽量使用core.insertAction()插入剧情文本事件。
@ -1767,7 +1767,7 @@ posInfo如果不为null则是一个含position, px和py的对象表示一个
core.drawTextContent(ctx, content, config) core.drawTextContent(ctx, content, config)
根据配置在某个画布上绘制一段文字。此函数会被core.drawTextBox()所调用。 根据配置在某个画布上绘制一段文字。此函数会被core.drawTextBox()所调用。
ctx为画布名或画布本身如果不设置则会忽略该函数。 ctx为画布名或画布本身如果不设置则会忽略该函数。
content为要绘制的文字内容支持所有的文字效果如\n${}\r\\i等但不支持支持\t和\b的语法。 content为要绘制的文字内容支持所有的文字效果如\n${}\r\\i\\c\\d\\e等),但不支持支持\t和\b的语法。
config为绘制的配置项目前可以包括如下几项 config为绘制的配置项目前可以包括如下几项
- left, top在该画布上绘制的左上角像素位置不设置默认为(0,0)。 - left, top在该画布上绘制的左上角像素位置不设置默认为(0,0)。
> 该函数绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。 > 该函数绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。
@ -1782,7 +1782,7 @@ config为绘制的配置项目前可以包括如下几项
core.drawTextBox(content, showAll) core.drawTextBox(content, showAll)
绘制一个对话框。content为一个字符串或一个字符串数组。 绘制一个对话框。content为一个字符串或一个字符串数组。
支持所有的文字效果(如\n${}\r\\i等也支持\t和\b的语法。 支持所有的文字效果(如\n${}\r\\i\\c\\d\\e等),也支持\t和\b的语法。
该函数将使用用户在剧情文本设置中的配置项进行绘制。 该函数将使用用户在剧情文本设置中的配置项进行绘制。
实际执行时会计算文本框宽度并绘制背景绘制标题和头像再调用core.drawTextContent()绘制正文内容。 实际执行时会计算文本框宽度并绘制背景绘制标题和头像再调用core.drawTextContent()绘制正文内容。
showAll可选如果为true则不会使用打字机效果而全部显示主要用于打字机效果的点击显示全部。 showAll可选如果为true则不会使用打字机效果而全部显示主要用于打字机效果的点击显示全部。
@ -1790,7 +1790,7 @@ showAll可选如果为true则不会使用打字机效果而全部显示
core.drawScrollText(content, time, lineHeight, callback) core.drawScrollText(content, time, lineHeight, callback)
绘制一个滚动字幕。content为绘制内容time为总时间默认为5000lineHeight为行距比例默认为1.4)。 绘制一个滚动字幕。content为绘制内容time为总时间默认为5000lineHeight为行距比例默认为1.4)。
滚动字幕将绘制在UI上支持所有的文字效果如\n${}\r\\i等但不支持\t和\b效果。 滚动字幕将绘制在UI上支持所有的文字效果如\n${}\r\\i\\c\\d\\e等),但不支持\t和\b效果。
可以通过剧情文本设置中的align控制是否居中绘制offset控制其距离左边的偏移量。 可以通过剧情文本设置中的align控制是否居中绘制offset控制其距离左边的偏移量。
@ -1802,7 +1802,7 @@ core.textImage(content, lineHeight)
core.drawChoices(content, choices) core.drawChoices(content, choices)
绘制一个选项框。 绘制一个选项框。
content可选为选项上方的提示文字支持所有的文字效果如\n${}\r\\i等也支持\t效果。 content可选为选项上方的提示文字支持所有的文字效果如\n${}\r\\i\\c\\d\\e等),也支持\t效果。
choices必选为要绘制的选项内容是一个列表。其中的每一项 choices必选为要绘制的选项内容是一个列表。其中的每一项
- 可以是一个字符串,表示选项文字,将使用剧情文本设置中的正文颜色来绘制,仅支持${}表达式计算。 - 可以是一个字符串,表示选项文字,将使用剧情文本设置中的正文颜色来绘制,仅支持${}表达式计算。
- 或者是一个包含text, color和icon的对象。 - 或者是一个包含text, color和icon的对象。

View File

@ -1721,7 +1721,7 @@ id可选为同时绘制的图标ID如果不为null则会同时绘制该图
core.drawText(content, callback) core.drawText(content, callback)
绘制一段文字。contents为一个字符串或一个字符串数组callback为全部绘制完毕的回调。 绘制一段文字。contents为一个字符串或一个字符串数组callback为全部绘制完毕的回调。
支持所有的文字效果(如\n${}\r\\i等也支持\t和\b的语法。 支持所有的文字效果(如\n${}\r\\i\\c\\d\\e等),也支持\t和\b的语法。
如果当前在事件处理中或录像回放中则会自动转成core.insertAction处理。 如果当前在事件处理中或录像回放中则会自动转成core.insertAction处理。
不建议使用该函数如有绘制文字的需求请尽量使用core.insertAction()插入剧情文本事件。 不建议使用该函数如有绘制文字的需求请尽量使用core.insertAction()插入剧情文本事件。
@ -1746,7 +1746,8 @@ posInfo如果不为null则是一个含position, px和py的对象表示一个
core.drawTextContent(ctx, content, config) core.drawTextContent(ctx, content, config)
根据配置在某个画布上绘制一段文字。此函数会被core.drawTextBox()所调用。 根据配置在某个画布上绘制一段文字。此函数会被core.drawTextBox()所调用。
ctx为画布名或画布本身如果不设置则会忽略该函数。 ctx为画布名或画布本身如果不设置则会忽略该函数。
content为要绘制的文字内容支持所有的文字效果如\n${}\r\\i等但不支持支持\t和\b的语法。 content为要绘制的文字内容支持所有的文字效果如\n${}\r\\i\\c\\d\\e等
,但不支持支持\t和\b的语法。
config为绘制的配置项目前可以包括如下几项 config为绘制的配置项目前可以包括如下几项
- left, top在该画布上绘制的左上角像素位置不设置默认为(0,0)。 - left, top在该画布上绘制的左上角像素位置不设置默认为(0,0)。
> 该函数绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。 > 该函数绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。
@ -1761,7 +1762,7 @@ config为绘制的配置项目前可以包括如下几项
core.drawTextBox(content, showAll) core.drawTextBox(content, showAll)
绘制一个对话框。content为一个字符串或一个字符串数组。 绘制一个对话框。content为一个字符串或一个字符串数组。
支持所有的文字效果(如\n${}\r\\i等也支持\t和\b的语法。 支持所有的文字效果(如\n${}\r\\i\\c\\d\\e等),也支持\t和\b的语法。
该函数将使用用户在剧情文本设置中的配置项进行绘制。 该函数将使用用户在剧情文本设置中的配置项进行绘制。
实际执行时会计算文本框宽度并绘制背景绘制标题和头像再调用core.drawTextContent()绘制正文内容。 实际执行时会计算文本框宽度并绘制背景绘制标题和头像再调用core.drawTextContent()绘制正文内容。
showAll可选如果为true则不会使用打字机效果而全部显示主要用于打字机效果的点击显示全部。 showAll可选如果为true则不会使用打字机效果而全部显示主要用于打字机效果的点击显示全部。
@ -1769,7 +1770,7 @@ showAll可选如果为true则不会使用打字机效果而全部显示
core.drawScrollText(content, time, lineHeight, callback) core.drawScrollText(content, time, lineHeight, callback)
绘制一个滚动字幕。content为绘制内容time为总时间默认为5000lineHeight为行距比例默认为1.4)。 绘制一个滚动字幕。content为绘制内容time为总时间默认为5000lineHeight为行距比例默认为1.4)。
滚动字幕将绘制在UI上支持所有的文字效果如\n${}\r\\i等但不支持\t和\b效果。 滚动字幕将绘制在UI上支持所有的文字效果如\n${}\r\\i\\c\\d\\e等),但不支持\t和\b效果。
可以通过剧情文本设置中的align控制是否居中绘制offset控制其距离左边的偏移量。 可以通过剧情文本设置中的align控制是否居中绘制offset控制其距离左边的偏移量。
@ -1781,7 +1782,7 @@ core.textImage(content, lineHeight)
core.drawChoices(content, choices) core.drawChoices(content, choices)
绘制一个选项框。 绘制一个选项框。
content可选为选项上方的提示文字支持所有的文字效果如\n${}\r\\i等也支持\t效果 content可选为选项上方的提示文字支持所有的文字效果如\n${}\r\\i\\c\\d\\e等),也支持\t。
choices必选为要绘制的选项内容是一个列表。其中的每一项 choices必选为要绘制的选项内容是一个列表。其中的每一项
- 可以是一个字符串,表示选项文字,将使用剧情文本设置中的正文颜色来绘制,仅支持${}表达式计算。 - 可以是一个字符串,表示选项文字,将使用剧情文本设置中的正文颜色来绘制,仅支持${}表达式计算。
- 或者是一个包含text, color和icon的对象。 - 或者是一个包含text, color和icon的对象。

View File

@ -282,10 +282,13 @@ floorId指定的是目标楼层的唯一标识符ID
- 使用`${}`来计算一个表达式的值,如`${status:atk+status:def}`。 - 使用`${}`来计算一个表达式的值,如`${status:atk+status:def}`。
- 使用`\f[...]`来同时插入一张立绘图,如`\f[1.png,100,200]`。 - 使用`\f[...]`来同时插入一张立绘图,如`\f[1.png,100,200]`。
- 使用`\\i[...]`来在对话框中绘制一个图标,如`\\i[fly]`。 - 使用`\\i[...]`来在对话框中绘制一个图标,如`\\i[fly]`。
- 使用`\\c[...]`来修改字体大小,如`\\b[16]`。
- 使用`\\d`来加粗或者取消粗体。
- 使用`\\e`来加斜体或取消斜体。
从V2.5.2开始,也允许绘制一张头像图在对话框中,只要通过`\t[1.png]`或`\t[标题,1.png]`的写法。 从V2.5.2开始,也允许绘制一张头像图在对话框中,只要通过`\t[1.png]`或`\t[标题,1.png]`的写法。
**使用`\\i[...]`绘制图标请注意:在事件块中,允许只写一个反斜杠`\i`,系统会自动转义成`\\i`;但是在脚本中必须两个反斜杠都写上!** **使用`\\i,\\c,\\d,\\e`时请注意:在事件块中,允许只写一个反斜杠`\`,系统会自动转义成`\\`;但是在脚本中必须两个反斜杠都写上!**
详细信息请参见[剧情文本控制](event#text显示一段文字剧情)中的说明。 详细信息请参见[剧情文本控制](event#text显示一段文字剧情)中的说明。

View File

@ -291,6 +291,18 @@
!> 注意,在事件块中,允许只写一个反斜杠`\i`,系统会自动转义成`\\i`;但是在脚本中必须两个反斜杠都写上! !> 注意,在事件块中,允许只写一个反斜杠`\i`,系统会自动转义成`\\i`;但是在脚本中必须两个反斜杠都写上!
从V2.6.3开始,也可以使用`\\c[...]`来切换当前字体,`\\d`来加粗或取消粗体,`\\e`来加斜体或取消斜体。
``` js
[
"这是原始字体,\\c[20]使用20号字体\\c[10]使用10号字体",
"\\c如果不加中括号则切换回原始字体。",
"\\d这是粗体\\d取消粗体\\e加斜体\\e取消斜体"
]
```
!> 注意,在事件块中,允许只写一个反斜杠`\c`,系统会自动转义成`\\c`;但是在脚本中必须两个反斜杠都写上!`\d`和`\e`同理。
另外值得一提的是,我们是可以在文字中计算一个表达式的值的。只需要将表达式用 `${ }`整个括起来就可以。 另外值得一提的是,我们是可以在文字中计算一个表达式的值的。只需要将表达式用 `${ }`整个括起来就可以。
``` js ``` js
@ -2001,7 +2013,7 @@ UI绘制事件。
] ]
``` ```
text必填为要绘制的文本支持所有的文字效果如\n${}\r\\i等但不支持支持\t和\b的语法。 text必填为要绘制的文本支持所有的文字效果如\n${}\r\\i\\c\\d\\e等),但不支持支持\t和\b的语法。
left和top必填为要绘制的起始像素坐标。实际绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。 left和top必填为要绘制的起始像素坐标。实际绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。

View File

@ -389,7 +389,7 @@ function omitedcheckUpdateFunction(event) {
} }
} }
try { try {
var code = Blockly.JavaScript.workspaceToCode(workspace).replace(/\\\\i/g, '\\\\\\\\i'); var code = Blockly.JavaScript.workspaceToCode(workspace).replace(/\\\\(i|c|d|e)/g, '\\\\\\\\$1');
codeAreaHL.setValue(code); codeAreaHL.setValue(code);
} catch (error) { } catch (error) {
codeAreaHL.setValue(String(error)); codeAreaHL.setValue(String(error));
@ -532,8 +532,7 @@ function omitedcheckUpdateFunction(event) {
MotaActionFunctions.parse( MotaActionFunctions.parse(
eval('obj=' + codeAreaHL.getValue().replace(/[<>&]/g, function (c) { eval('obj=' + codeAreaHL.getValue().replace(/[<>&]/g, function (c) {
return {'<': '&lt;', '>': '&gt;', '&': '&amp;'}[c]; return {'<': '&lt;', '>': '&gt;', '&': '&amp;'}[c];
}).replace(/\\r/g, '\\\\r').replace(/\\f/g, '\\\\f') }).replace(/\\(r|f|i|c|d|e)/g,'\\\\$1')),
.replace(/\\i/,'\\\\i')),
document.getElementById('entryType').value document.getElementById('entryType').value
); );
} }
@ -607,7 +606,7 @@ function omitedcheckUpdateFunction(event) {
return; return;
} }
var code = Blockly.JavaScript.workspaceToCode(editor_blockly.workspace); var code = Blockly.JavaScript.workspaceToCode(editor_blockly.workspace);
code = code.replace(/\\i/g, '\\\\i'); code = code.replace(/\\(i|c|d|e)/g, '\\\\$1');
eval('var obj=' + code); eval('var obj=' + code);
setvalue(JSON.stringify(obj)); setvalue(JSON.stringify(obj));
} }
@ -621,7 +620,7 @@ function omitedcheckUpdateFunction(event) {
]; ];
if (b && types.indexOf(b.type)>=0) { if (b && types.indexOf(b.type)>=0) {
try { try {
var code = "[" + Blockly.JavaScript.blockToCode(b).replace(/\\i/g, '\\\\i') + "]"; var code = "[" + Blockly.JavaScript.blockToCode(b).replace(/\\(i|c|d|e)/g, '\\\\$1') + "]";
eval("var obj="+code); eval("var obj="+code);
// console.log(obj); // console.log(obj);
if (obj.length > 0 && b.type.startsWith(obj[0].type)) { if (obj.length > 0 && b.type.startsWith(obj[0].type)) {

View File

@ -856,7 +856,7 @@ ui.prototype._buildFont = function (fontSize, bold, italic) {
////// 绘制一段文字到某个画布上面 ////// 绘制一段文字到某个画布上面
// ctx要绘制到的画布 // ctx要绘制到的画布
// content要绘制的内容转义字符目前只允许留 \n, \r[...] 和 \i[...] // content要绘制的内容转义字符目前只允许留 \n, \r[...], \i[...], \c[...], \d, \e
// config绘制配置项目前暂时包含如下内容均为可选 // config绘制配置项目前暂时包含如下内容均为可选
// left, top起始点位置maxWidth单行最大宽度color默认颜色align左中右 // left, top起始点位置maxWidth单行最大宽度color默认颜色align左中右
// fontSize字体大小lineHeight行高time打字机间隔 // fontSize字体大小lineHeight行高time打字机间隔