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

Project1

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

[已经解决] 如何利用脚本居中显示对话?

[复制链接]

Lv2.观梦者

梦石
0
星屑
349
在线时间
143 小时
注册时间
2013-6-23
帖子
85

开拓者

跳转到指定楼层
1
发表于 2017-5-28 17:15:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Q_Lucky 于 2017-5-28 17:18 编辑

如题。
希望实现文字水平居中且垂直居中
感觉应该是:
文字的x坐标=对话框宽度-文字长度/2
文字的y坐标=对话框高度/2
But but but 我不会js
签名,签名呢!

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42360
在线时间
7600 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2017-5-28 18:21:31 | 只看该作者
显示文字的时候,窗口位置选择中间,然后第一行留空,第二行写内容就可以了。
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
143 小时
注册时间
2013-6-23
帖子
85

开拓者

3
 楼主| 发表于 2017-5-28 21:05:42 | 只看该作者
fux2 发表于 2017-5-28 18:21
显示文字的时候,窗口位置选择中间,然后第一行留空,第二行写内容就可以了。 ...

嗯……这样行是行,可是不够精确,而且如果频繁使用的话加上转意符号会很麻烦
我希望能够有算法能够解决这个问题,毕竟脚本本身就是用来解决一类问题的
何况html5本身就有文本居中功能呢
签名,签名呢!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
5965
在线时间
1186 小时
注册时间
2014-9-6
帖子
198
4
发表于 2017-5-28 21:48:04 | 只看该作者


來源:【心得】小小的文字工具, 文字置中

评分

参与人数 1星屑 +249 收起 理由
fux2 + 249 认可答案

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
143 小时
注册时间
2013-6-23
帖子
85

开拓者

5
 楼主| 发表于 2017-5-28 22:15:22 | 只看该作者
mr24970985 发表于 2017-5-28 21:48
來源:【心得】小小的文字工具, 文字置中

哦呀
谢谢啦
签名,签名呢!
回复 支持 0 反对 1

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22963
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2017-5-30 00:02:03 | 只看该作者

  1. /*:ja
  2. * @plugindesc メッセージボックスの文字を中央揃い、右揃いにするプラグインです。
  3. * @author 村人A
  4. *
  5. * @help
  6. *
  7. * メッセージ内で指定の行の冒頭で「\#」で中央揃い、[\_]で右揃いにします。
  8. * ex)メッセージ入力時
  9. *
  10. * ここはデフォルト(左揃い)
  11. * \#ここは中央ぞろい
  12. * \_ここは右揃い
  13. * ここはデフォルト(左揃い)
  14. *
  15. * となります。
  16. *
  17. * 拡大・縮小文字を揃えたい場合はや「\#」や「\_」の前に指定特殊文字「\{」や「\}」を
  18. * 入力してください。
  19. * ex)メッセージ入力時
  20. *
  21. * ここはデフォルト(左揃い)
  22. * \{\#ここは一段階大きな文字を中央ぞろい
  23. * \}}\_ここは一段階小さい文字を右揃い
  24. * ここは一段階小さい文字を左揃い
  25. *
  26. */

  27. (function() {
  28.         var _Window_Base_initialize = Window_Base.prototype.initialize;
  29.         Window_Base.prototype.initialize = function(x, y, width, height) {
  30.                 _Window_Base_initialize.call(this, x, y, width, height);
  31.                 this.villaA_paddingleft = 0;
  32.                 this.villaA_procLine = 0;
  33.         }
  34.        
  35.         Window_Base.prototype.obtainEscapeCode = function(textState) {
  36.                 textState.index++;
  37.                 var regExp = /^[\$\.\|\^!><\{\}\\\#\_]|^[A-Z]+/i;
  38.                 var arr = regExp.exec(textState.text.slice(textState.index));
  39.                 if (arr) {
  40.                         textState.index += arr[0].length;
  41.                         return arr[0].toUpperCase();
  42.                 } else {
  43.                         return '';
  44.                 }
  45.         };

  46.         Window_Message.prototype.processEscapeCharacter = function(code, textState) {
  47.                 switch (code) {
  48.                 case ':
  49.                         this._goldWindow.open();
  50.                         break;
  51.                 case '.':
  52.                         this.startWait(15);
  53.                         break;
  54.                 case '|':
  55.                         this.startWait(60);
  56.                         break;
  57.                 case '!':
  58.                         this.startPause();
  59.                         break;
  60.                 case '>':
  61.                         this._lineShowFast = true;
  62.                         break;
  63.                 case '<':
  64.                         this._lineShowFast = false;
  65.                         break;
  66.                 case '^':
  67.                         this._pauseSkip = true;
  68.                         break;
  69.                 case '\#':
  70.                         var linelenght = textState.text.split(/\r\n|\r|\n/)
  71.                         this.villaA_paddingleft = (this.width - this.textWidth(linelenght[this.villaA_procLine]) - this.newLineX())/2;
  72.                         break;
  73.                 case '\_':
  74.                         var linelenght = textState.text.split(/\r\n|\r|\n/)
  75.                         this.villaA_paddingleft = this.width - this.textWidth(linelenght[this.villaA_procLine]) - 20 - this.newLineX();
  76.                         break;
  77.                 default:
  78.                         Window_Base.prototype.processEscapeCharacter.call(this, code, textState);
  79.                         break;
  80.                 }
  81.         };

  82.         Window_Base.prototype.processCharacter = function(textState) {
  83.                 switch (textState.text[textState.index]) {
  84.                 case '\n':
  85.                         this.processNewLine(textState);
  86.                         this.villaA_procLine++;
  87.                         break;
  88.                 case '\f':
  89.                         this.processNewPage(textState);
  90.                         break;
  91.                 case '\x1b':
  92.                         this.processEscapeCharacter(this.obtainEscapeCode(textState), textState);
  93.                         break;
  94.                 default:
  95.                         this.processNormalCharacter(textState);
  96.                         break;
  97.                 }
  98.         };


  99.         Window_Base.prototype.processNormalCharacter = function(textState) {
  100.                 var c = textState.text[textState.index++];
  101.                 var w = this.textWidth(c);
  102.                 this.contents.drawText(c, textState.x+this.villaA_paddingleft, textState.y, w * 2, textState.height);
  103.                 textState.x += w;
  104.         };

  105.         var _Window_Base_processNewLine = Window_Base.prototype.processNewLine
  106.         Window_Base.prototype.processNewLine = function(textState) {
  107.                 _Window_Base_processNewLine.call(this, textState);
  108.                 this.villaA_paddingleft = 0;

  109.         };

  110.         var _Window_Message_startMessage = Window_Message.prototype.startMessage
  111.         Window_Message.prototype.startMessage = function() {
  112.                         _Window_Message_startMessage.call(this);
  113.                         this.villaA_procLine = 0;
  114.         }
  115. })();
复制代码
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
349
在线时间
143 小时
注册时间
2013-6-23
帖子
85

开拓者

7
 楼主| 发表于 2017-6-4 02:31:30 | 只看该作者

嗯 谢谢 虽然我暂时还看不懂
等我把js学完了再回来研读一下
签名,签名呢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 22:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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