查看: 2852|回复: 3

[已经解决] 怎么让对话框文字居中?

[复制链接]
梦石
0
星屑
50
在线时间
22 小时
注册时间
2013-10-18
回帖
4
发表于 2013-11-10 17:33:00 | 显示全部楼层 |阅读模式

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

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

×
我想让对话框里的文字横向居中,之前一直是通过按空格来调整的,可是这么做又浪费时间又把握不好距离,想问问可以通过脚本或者其他方法实现么??

梦石
0
星屑
407
在线时间
1291 小时
注册时间
2013-1-12
回帖
3349

贵宾

发表于 2013-11-12 08:10:28 | 显示全部楼层
某整合系統裡有
然後問一下  是要全程居中 還是1~2句居中?

回复

使用道具 举报

梦石
0
星屑
50
在线时间
22 小时
注册时间
2013-10-18
回帖
4
 楼主| 发表于 2013-11-12 17:47:00 | 显示全部楼层
76213585 发表于 2013-11-12 08:10
某整合系統裡有
然後問一下  是要全程居中 還是1~2句居中?

1-2句居中就好,空格总是搞不好位置很痛苦啊
PS:能发下那个整合的网址么?

点评

現在找不到 不過是在RM技術发布區....  发表于 2013-11-13 07:27
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2013-11-16 22:12:20 | 显示全部楼层
本帖最后由 tseyik 于 2013-11-16 22:19 编辑

http://www20.atwiki.jp/type74rx-t/pages/183.html

事件中:脚本。
rxmsg_ctr
文章前設定。
rxmsg
回復到通常表示。
註1:一部分制御文字不能使用
註2:若文中有不同大小的文字,會令置中有偏差
[pre lang="ruby" line="1"]#
#    文章の自動センタリング処理(RGSS3)
#  (C)2011 TYPE74RX-T
#

module Kernel
  #--------------------------------------------------------------------------
  # ★ センタリングフラグ
  #   (顔グラ設定がなく、イベントでセンタリング指定がされているか)
  #--------------------------------------------------------------------------
  def rx3_message_centering?
    $game_message.face_name.empty? and $game_temp.rx_message_centering
  end
end

#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
#  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
# スタンスは $game_temp で参照されます。
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :rx_message_centering     # 文章のセンタリング表示フラグ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias rx3_111216_initialize initialize
  def initialize
    rx3_111216_initialize # メソッド呼び戻し
    @rx_message_centering = false
  end
end

#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ★ センタリングフラグをオン
  #--------------------------------------------------------------------------
  def rxmsg_ctr
    $game_temp.rx_message_centering = true
  end
  #--------------------------------------------------------------------------
  # ★ センタリングフラグをオフ
  #--------------------------------------------------------------------------
  def rxmsg
    $game_temp.rx_message_centering = false
  end
end

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  ゲーム中の全てのウィンドウのスーパークラスです。
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ★ 各行ごとの X 座標を設定(センタリング用)
  #--------------------------------------------------------------------------
  def rx_set_text_xpos(text)
    # メッセージを配列化して rx_textspl に入れる
    rx_texts = text.sub("\n", " ")
    rx_textspl = rx_texts.split(/\s+/)
    @rx_text_count = 0
    @rx_txt_widths = []
    # 各行ごとの最終的な X 座標を配列に入れる
    (0...rx_textspl.size).each do |i|
      xps = (Graphics.width - 32 - contents.text_size(rx_textspl).width) / 2
      @rx_txt_widths.push(xps)
    end
  end
  #--------------------------------------------------------------------------
  # ● 改行文字の処理
  #--------------------------------------------------------------------------
  alias rx3_111216_process_new_line process_new_line
  def process_new_line(text, pos)
    # ★ センタリングフラグが立っていたら表示行数をカウント
    if rx3_message_centering?
      @rx_text_count += 1
      return if @rx_text_count == @rx_txt_widths.size
    end
    rx3_111216_process_new_line(text, pos) # メソッド呼び戻し
    # ★ 改行後の X 座標をセンタリング
    pos[:x] = @rx_txt_widths[@rx_text_count] if rx3_message_centering?
  end
end

#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Base
  #--------------------------------------------------------------------------
  # ★ 各行ごとの X 座標を設定(センタリング用)
  #--------------------------------------------------------------------------
  def rx_set_text_xpos(text)
    super(text)
  end
  #--------------------------------------------------------------------------
  # ● 全テキストの処理
  #--------------------------------------------------------------------------
  alias rx3_111216_process_all_text process_all_text
  def process_all_text
    # ★ センタリングフラグが立っていたら各行ごとの X 座標を設定
    rx_set_text_xpos(convert_escape_characters($game_message.all_text)) if rx3_message_centering?
    rx3_111216_process_all_text # メソッド呼び戻し
  end
  #--------------------------------------------------------------------------
  # ● 改行位置の取得
  #--------------------------------------------------------------------------
  alias rx3_111216_new_line_x new_line_x
  def new_line_x
    # センタリングフラグが立っていたらセンタリング
    return @rx_txt_widths[@rx_text_count] if rx3_message_centering?
    rx3_111216_new_line_x # メソッド呼び戻し
  end
end[/pre]

点评

厉害,经常看到前辈的好脚本。不过,真心期待6R能出繁简体切换功能啊。。。  发表于 2013-11-22 20:43

评分

参与人数 2星屑 +66 赞 +1 收起 理由
哇哇哇啊叭叭 + 1 塞糖
熊喵酱 + 66 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部