\f drawImage in TextBox

This commit is contained in:
oc 2018-12-03 21:56:17 +08:00
parent 717efe7882
commit b970002b4f
4 changed files with 30 additions and 1 deletions

View File

@ -422,7 +422,7 @@ document.getElementById('blocklyDiv').onmousewheel = function(e){
var type = args.type;
if (!type) return false;
editor_blockly.id = id_;
codeAreaHL.setValue(input.value.replace(/\\r/g,'\\\\r'));
codeAreaHL.setValue(input.value.replace(/\\r/g,'\\\\r').replace(/\\f/,'\\\\f'));
document.getElementById('entryType').value = type;
editor_blockly.parse();
editor_blockly.show();

View File

@ -313,6 +313,7 @@ floorId指定的是目标楼层的唯一标识符ID
- 使用`\b[...]`来制作对话框效果,如`\b[up,3,2]`。
- 使用`\r[...]`来动态修改局部文本的颜色,如`\r[red]`。
- 使用`${}`来计算一个表达式的值,如`${status:atk+status:def}`。
- 使用`\f[...]`来同时插入一张立绘图,如`\f[1.png,100,200]`。
从V2.5.2开始,也允许绘制一张头像图在对话框中,只要通过`\t[1.png]`或`\t[标题,1.png]`的写法。

View File

@ -253,6 +253,20 @@
]
```
从V2.5.3以后,也可以使用`\f[...]`来同时绘制一张图片。
其基本写法是`\f[图片名,起始x像素,起始y像素]`,或者`\f[图片名,起始x像素,起始y像素,绘制宽度,绘制高度]`。
需要注意的是这个图片是绘制在UI层上的下一个事件执行时即会擦除同时如果使用了\t的图标动画效果重叠的地方也会被图标动画给覆盖掉。
``` js
"x,y": [ // 实际执行的事件列表
"\t[勇士]\b[up,hero]\f[1.png,100,100]以(100,100)为左上角绘制1.png图片",
"\t[hero]\f[1.png,100,100]\f[2.png,300,300]同时绘制了两张图片",
"\f[1.png,100,100,300,300]也可以填写宽高,这样会把图片强制进行放缩到指定的宽高值"
]
```
另外值得一提的是,我们是可以在文字中计算一个表达式的值的。只需要将表达式用 `${ }`整个括起来就可以。
``` js

View File

@ -500,6 +500,20 @@ ui.prototype.drawTextBox = function(content, showAll) {
core.status.boxAnimateObjs = [];
core.clearMap('ui');
// drawImage
content = content.replace(/(\f|\\f)\[(.*?)]/g, function (text, sympol, str) {
var ss = str.split(",");
if (ss.length!=3 && ss.length!=5) return "";
var img = core.material.images.images[ss[0]];
if (!core.isset(img)) return "";
// 绘制
if (ss.length==3)
core.canvas.ui.drawImage(img, parseFloat(ss[1]), parseFloat(ss[2]));
else
core.canvas.ui.drawImage(img, 0, 0, img.width, img.height, parseFloat(ss[1]), parseFloat(ss[2]), parseFloat(ss[3]), parseFloat(ss[4]));
return "";
});
var globalFont = core.status.globalAttribute.font;
var font = textfont + 'px '+globalFont;
if (textAttribute.bold) font = "bold "+font;