Project1

标题: 文字转图片插件的卡顿问题 [打印本页]

作者: 康姆图帕帕    时间: 2018-10-15 11:23
标题: 文字转图片插件的卡顿问题
本帖最后由 康姆图帕帕 于 2019-1-3 21:00 编辑

DTextPicture是目前我用着最舒服的文字显示插件,它可以将输入的文字转化为具有图层编号的图片,兼具了显示变量、文本指令、即时更新、无限持续时间、优先度高于图片等各种优点,然而一个不足几乎毁了全部:显示文字过多(差不多半个屏幕以上20号字体)就会开始导致卡顿。

小弟目前猜测是由于spirite的显示方式导致的,想来求大佬帮忙看一下代码,哪里可以优化一下?

-----------------------------------------------------------------------------
由于自定义的需要,我在735行中的  Game_Picture.prototype.show = function()里加入了  pictureId  和  hue  两个参数,如果想正常使用还请删去~~


-----------------------------------------------------------------------------
2019.1.3   10楼的DTP可直接下载使用,以及*重要!!  请使用  D_TEXT_SETTING REAL_TIME ON  指令进行图片的实时显示!并且该事件不要使用并行处理!

DTextPicture.zip

8.21 KB, 下载次数: 185


作者: 康姆图帕帕    时间: 2018-10-15 16:39
问题定位了,在rpg_sprite中

Sprite_Picture.prototype.updateBitmap = function() {
    var picture = this.picture();
    if (picture) {
        var pictureName = picture.name();
        if (this._pictureName !== pictureName) {
            this._pictureName = pictureName;
            this._hue = picture.hue();
            this.loadBitmap();
        }
        if (this._pictureName == pictureName) {
            this._hue = picture.hue();
            this.loadBitmap();
        }
        this.visible = true;
    } else {
        this._pictureName = '';
        this.bitmap = null;
        this.visible = false;
    }
};
其中
        if (this._pictureName == pictureName) {
            this._hue = picture.hue();
            this.loadBitmap();
        }
这一段是后来添加的,是为了能够调整图片的色相,正是它导致了DTextPicture的问题,大概就是在图片显示后,反复进行图片色相调整导致卡顿。
求助如何能使图片在没有调整色相的情况下,不会执行这一步骤?
作者: 康姆图帕帕    时间: 2018-10-15 16:46
改了下,已经解决
        if (this._pictureName == pictureName) {
            if (this._hue !== picture.hue()) {
                    this._hue = picture.hue();
            this.loadBitmap();
            }
        }
感觉自己的人生技能点真是奇葩

作者: 康姆图帕帕    时间: 2018-10-15 16:49
本问题已经被我体循环了,DTextPicture通常情况下不会导致卡顿,大家放心用吧
作者: rexuegg123    时间: 2018-10-15 17:05
请教楼主,你这日文看不懂,有中文版说明没?
作者: 康姆图帕帕    时间: 2018-10-15 17:48
本帖最后由 康姆图帕帕 于 2018-10-15 19:28 编辑
rexuegg123 发表于 2018-10-15 17:05
请教楼主,你这日文看不懂,有中文版说明没?


好的,简单说明一下用法:

D_TEXT [文本内容] [文字大小]
输入要显示的文字,例:D_TEXT 文本内容 20
D_TEXT_SETTING ALIGN [文本位置,0左1中2右]
调整文本基准位置,例:D_TEXT_SETTING ALIGN 0
D_TEXT_SETTING BG_COLOR [背景颜色]
为图片文本添加一个背景色,
例:D_TEXT_SETTING BG_COLOR black
       D_TEXT_SETTING BG_COLOR #336699
       D_TEXT_SETTING BG_COLOR rgba(255,255,255,0.5)
D_TEXT_SETTING REAL_TIME ON
文本能够即时更新(比如文本内有变量)
D_TEXT_SETTING WINDOW ON
文本带有一个窗口框
D_TEXT_SETTING FONT [字体]
选择文本的字体

以及:DTextPicture支持各种文本指令,实测YEP_MessageCore指令也都有效(不知是否为全部)
目前证实可用的指令:

基本指令:
\V[n]   变量
\N[n]   角色名
\P[n]   队员名
\G       货币
\C[n]   文字颜色
\I[n]    图标
\{        字号放大
\}        字号缩小

独特指令:
\V[n,m](显示变量n,并且n有m位数,配合即时显示可以做时间系统12:05:40这种)
\item[n]   物品n图标+名称
\weapon[n]   同上,武器
\armor[n]      同上,防具
\skill[n]         同上,技能
\state[n]       同上,状态
\oc[c]          字体轮廓颜色
\ow[n]         字体轮廓大小
\f[b]            字体加粗
\f[i]            字体倾斜
\f[n]            还原字体加粗与倾斜

其他指令:
楼主试了下,YEP_MessageCore的\it[x](显示状态+图标)是可用的,不知其他指令是否可用

最后,关键的使用方法:
1.使用插件指令"D_TEXT [文本内容] [文字大小]"描绘要显示的文本
2.使用"D_TEXT_SETTING"下的各种指令进行文本的自定义(此项非必要)
3.使用事件页中的"显示图片",调整你的图片文本的编号(为1时无效)、大小、位置、合成方式等种种参数。注意!"图像"选项要留空!*可以使用$gameScreen.showPicture脚本
4.执行本事件。现在,该文本图片本质即是一张图片,能进行通常的移动、震动、旋转、消失等操作。
-------------------------------------------------------------
补充:"显示图片"上可以承载多条D_TEXT指令,文本将被显示为多行
例:D_TEXT 今天天气真好啊 20
       D_TEXT 明明在下雨不要尬聊了 20
       $gameScreen.showPicture(20,"",1,408,312,100,100,255,0)

以上内容将被显示为

不要在意字体

以上内容纯手打,望借鉴。

作者: 康姆图帕帕    时间: 2018-10-15 17:57
插件的原作者为トリアコンタン(triacontane),是完全公开并免费的
链接地址https://github.com/triacontane
作者: rexuegg123    时间: 2018-10-15 19:18
楼主,你这个插件的指令时在事件的插件指令中用吗?
比如说“D_TEXT”这个指令怎么用的,你能给个实例、效果图片什么的吗?
作者: rexuegg123    时间: 2018-10-15 20:54
楼主,无法显示。
错误类型:

cannot read property 'width' of undefined
作者: 康姆图帕帕    时间: 2018-10-16 11:02
rexuegg123 发表于 2018-10-15 20:54
楼主,无法显示。
错误类型:

重新开了个工程,在1L附件里下载了插件装上,还是没有什么问题...



你也开个新工程试试,如果能用,只能说是老工程的问题了。

以及我重新弄了份原版的,也试试吧

DTextPicture.zip

8.21 KB, 下载次数: 153


作者: rexuegg123    时间: 2018-10-16 15:40
楼主,能大概告之一下,这个插件的原理么?
作者: rexuegg123    时间: 2018-10-19 13:51
楼主,哪个即使显示变量应该怎么弄
作者: 康姆图帕帕    时间: 2018-10-19 16:34
本帖最后由 康姆图帕帕 于 2018-10-19 16:37 编辑
rexuegg123 发表于 2018-10-19 13:51
楼主,哪个即使显示变量应该怎么弄


D_TEXT \V[变量] [文字大小]
D_TEXT_SETTING REAL_TIME ON
$gameScreen.showPicture
例:

D_TEXT \V[10] 20
D_TEXT_SETTING REAL_TIME ON
$gameScreen.showPicture(2,'',1,408,316,100,100,255,0)

或者你直接将这个图片的事件设成并行处理也行

作者: pro    时间: 2018-11-20 03:50
这个插件很不错啊!谢谢你了。
作者: 347780682    时间: 2018-11-20 19:38
大佬 我想问下这个插件可以在战斗中显示文字吗?
作者: rexuegg123    时间: 2019-3-10 13:20
楼主,该插件都是通过插件命令使用,能否通过代码调用?
作者: 康姆图帕帕    时间: 2019-3-10 17:56
本帖最后由 康姆图帕帕 于 2019-3-10 17:58 编辑
rexuegg123 发表于 2019-3-10 13:20
楼主,该插件都是通过插件命令使用,能否通过代码调用?


代码是指脚本吗?刚刚实测了一下,是可行的!
目前,插件命令 D_TEXT [文字] [字号] 可以用脚本 $gameScreen.setDTextPicture("字符串", 字号) 来代替。
不知道你需要哪些插件命令的脚本?
作者: rexuegg123    时间: 2019-3-11 11:53
康姆图帕帕 发表于 2019-3-10 17:56
代码是指脚本吗?刚刚实测了一下,是可行的!
目前,插件命令 D_TEXT [文字] [字号] 可以用脚本 $gameScr ...

当变量的时候,应该怎么写呢?
比如:D_TEXT 类型:\v[453] 15
作者: rexuegg123    时间: 2019-3-12 15:10
楼主,我这里V小写都可以……另外,实时刷新的命令在脚本里怎么搞啊?
作者: HETOKA    时间: 2019-3-12 21:43
大佬,可以每一句话都用不同字体吗

D_TEXT_SETTING FONT这个指令我输入了还是默认的字体
作者: rexuegg123    时间: 2019-3-27 12:16
楼主又来打扰你……
这个插件是否可以直接显示自己脚本里的变量,比如自己设定的全局变量:WY_set 。
尝试了以下方法都不行……
$gameScreen.setDTextPicture("\x1bVWY_set ",15) 或$gameScreen.setDTextPicture("\x1bV[WY_set] ",15)
作者: rexuegg123    时间: 2020-2-4 15:34
楼主,在自己坐游戏没啊……

又来请教你:这个文字转图片插件,文字转成图片显示出来后好像自带外发光效果,不知道可以去掉不?
一些颜色看着还好,但想黑色等深色显示时,看着就很难受了……


作者: 白嫩白嫩的    时间: 2020-2-4 23:46
rexuegg123 发表于 2020-2-4 15:34
楼主,在自己坐游戏没啊……

又来请教你:这个文字转图片插件,文字转成图片显示出来后好像自带外发光效果 ...

独特指令:
\V[n,m](显示变量n,并且n有m位数,配合即时显示可以做时间系统12:05:40这种)
\item[n]   物品n图标+名称
\weapon[n]   同上,武器
\armor[n]      同上,防具
\skill[n]         同上,技能
\state[n]       同上,状态
\oc[c]          字体轮廓颜色
\ow[n]         字体轮廓大小

\f[b]            字体加粗
\f[i]            字体倾斜
\f[n]            还原字体加粗与倾斜
作者: rexuegg123    时间: 2020-2-5 08:30
白嫩白嫩的 发表于 2020-2-4 23:46
独特指令:
\V[n,m](显示变量n,并且n有m位数,配合即时显示可以做时间系统12:05:40这种)
\item[n]    ...

谢谢提醒,,怎么就没养成多看前文指令的习惯!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1