设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3951|回复: 6
打印 上一主题 下一主题

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
362
在线时间
36 小时
注册时间
2018-12-29
帖子
35
跳转到指定楼层
1
发表于 2019-3-24 19:56:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

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


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


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

JAVASCRIPT 代码复制
  1. /*:
  2.  * @plugindesc Flysword_AutoSplit
  3.  * @author: Flysword
  4.  *
  5.  */
  6.  
  7. //按长度切割字符串并加入换行符
  8. String.prototype.AutoSplit = function (knife) {
  9.     var splitedString = new Array();
  10.     var l = this.length;
  11.     var arr_l = l / knife;
  12.     for (var i = 0; i < arr_l; i++) {
  13.         splitedString[i] = this.substr(i * knife, knife);
  14.     };
  15.     var result = '';
  16.     for (var j = 0; j < splitedString.length; j++) {
  17.         result = result +  splitedString[j] + '\n';
  18.     }
  19.     return result;
  20. }



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

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

JAVASCRIPT 代码复制
  1. /*:
  2.  * @plugindesc Flysword_AutoPeriodSplit
  3.  * @author: Flysword
  4.  *
  5.  */
  6.  
  7. //按长度切割字符串,加入换行符。若遇到句号,也自动换行。
  8. String.prototype.AutoPeriodSplit = function (knife) {
  9.     var splitedString = new Array();
  10.     var i = 0;
  11.     var j = 0;
  12.     var _knife = knife;
  13.     while (this.substr(i, knife) != '') {
  14.         splitedString[j] = this.substr(i, knife);
  15.         _knife = splitedString[j].indexOf('。') + 1;
  16.         if (_knife > 0) {
  17.             splitedString[j] = this.substr(i, _knife);
  18.             i += _knife;
  19.         } else {
  20.             i += knife;
  21.         }
  22.         j += 1;
  23.     }
  24.     var result = '';
  25.     for (var i = 0; i < splitedString.length; i++) {
  26.         result = result +  splitedString[j] + '\n';
  27.     }
  28.     return result;
  29. }


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

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

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

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



其中下面那段描述就是直接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代码,希望能早日做出来自己的小游戏嘿嘿
头像被屏蔽

Lv4.逐梦者 (禁止发言)

梦石
0
星屑
11943
在线时间
38 小时
注册时间
2019-3-1
帖子
22
2
发表于 2019-4-5 17:32:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
18582
在线时间
1029 小时
注册时间
2019-3-5
帖子
1418
3
发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-30 20:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表