查看: 5176|回复: 6

[原创发布] 自动换行以及根据句号自动换行,可随意用在自己的插件中

[复制链接]
梦石
0
星屑
362
在线时间
36 小时
注册时间
2018-12-29
回帖
26
发表于 2019-3-24 19:56:27 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 ltxfj 于 2019-3-24 20:12 编辑

感谢各位论坛前辈们的指导,最近感觉写代码越来越有意思了。

不过我写的很多代码都是自己的游戏单独使用的,大部分没法分享,因为改的东西太多www


不过今天写了几个小函数,用起来会很方便,今天先放出来两个,各位可以在自己的插件中,若需要自动换行功能的话可以直接调用ww


第一个是简单的自动换行:

[pre lang="javascript"]/*:
* @plugindesc Flysword_AutoSplit
* @author: Flysword
*
*/

//按长度切割字符串并加入换行符
String.prototype.AutoSplit = function (knife) {
    var splitedString = new Array();
    var l = this.length;
    var arr_l = l / knife;
    for (var i = 0; i < arr_l; i++) {
        splitedString = this.substr(i * knife, knife);
    };
    var result = '';
    for (var j = 0; j < splitedString.length; j++) {
        result = result +  splitedString[j] + '\n';
    }
    return result;
}[/pre]



简单来说,传入一个参数后,比如 str1.AutoSplit(10),就会每10个字加入一个\n符号,这样在屏幕上就会自动换行了。

然后第二个是除了自动换行外,遇到句号也会自动换行:

[pre lang="javascript"]/*:
* @plugindesc Flysword_AutoPeriodSplit
* @author: Flysword
*
*/

//按长度切割字符串,加入换行符。若遇到句号,也自动换行。
String.prototype.AutoPeriodSplit = function (knife) {
    var splitedString = new Array();
    var i = 0;
    var j = 0;
    var _knife = knife;
    while (this.substr(i, knife) != '') {
        splitedString[j] = this.substr(i, knife);
        _knife = splitedString[j].indexOf('。') + 1;
        if (_knife > 0) {
            splitedString[j] = this.substr(i, _knife);
            i += _knife;
        } else {
            i += knife;
        }
        j += 1;
    }
    var result = '';
    for (var i = 0; i < splitedString.length; i++) {
        result = result +  splitedString[j] + '\n';
    }
    return result;
}[/pre]

简单的功能和上面那个相似,就是加了个如果遇到句号,也在句号后面加\n的功能。用法也是str1.AutoPeriodSplit(10)这样。

这里都是按照字数分行的,无论是英文、日文、中文都是一个字算一个,不分全角半角,如果想要细分的话可以自己随便改改代码,主要是加判断,这里就不写了 /w \

还有就是抱歉像是var i=0这样的很多不好看的代码,实在是新手遗留的坏习惯>  <以后一定会改的,现在先写出来安心一些www

贴一下这边的效果,主要用在了我自己的自定义物品描述窗口上:

QQ图片20190324195457a.png

其中下面那段描述就是直接str1.AutoPeriodSplit(16)切分了,而且会跟着句号自动换行=w=这样就可以所有物品的描述都在MV的程序的描述里写完了,然后自己在代码中直接处理就可以了。


严格来说不能算个插件啦,不过是可以给其他人的插件用的方便的功能,希望能帮得上大家ww

点评

result = result + splitedString[j] + '\n';这一行应该是 splitedString[i]  发表于 2020-6-29 00:52
我喜歡那個物品有圖片XD  发表于 2019-3-25 19:24

评分

参与人数 2赞 +2 收起 理由
白嫩白嫩的 + 1 精品文章
if216 + 1 塞糖

查看全部评分

/  w\ 大家好我是飞剑Flysword,正在学习写js代码,希望能早日做出来自己的小游戏嘿嘿
头像被屏蔽
梦石
0
星屑
17133
在线时间
48 小时
注册时间
2019-3-1
回帖
22
发表于 2019-4-5 17:32:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
25359
在线时间
1136 小时
注册时间
2019-3-5
回帖
1303
发表于 2019-4-14 16:30:17 | 显示全部楼层
请问在哪里插入str1.AutoSplit(10)这个参数?

点评

然后这个窗体传字符串的参数是setItem,把里面的item.description改成item.description.AutoSplit(n)即可。所以说这个其实只是个给插件用的函数类插件啦/w\  发表于 2019-4-14 20:46
这个需要自己修改自己需要使用这个函数的窗体的函数,比如说我这边是在 Window_Help下使用的,那么就在Window_Help下的找到setText函数  发表于 2019-4-14 20:45
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部