Project1

标题: 关于对话居中 [打印本页]

作者: 快乐之源    时间: 2012-8-23 07:12
标题: 关于对话居中
有一段对话,需要文字居中,请问该如何设置(不要说用空格。。)
dsu_plus_rewardpost_czw
作者: fxwd    时间: 2012-8-23 17:44
本帖最后由 fxwd 于 2012-8-23 17:49 编辑

sorry,没看见,我再想想
————————————————
刚才测试了一下空格是可以的,不知道为什么楼主不用,如果不用的话,可以改脚本,不算太难,另外就只能用图片显示对话了
作者: zldarwin    时间: 2012-8-24 16:40
有时候是得找一些折中的方法,挺无奈的。

实在找不到方法了,先使用最直接、简单的方式,也许会是最有效的。

之前我也找半天,坐等完美解决方案。
作者: 吾不知    时间: 2012-8-24 17:02
如下:文字自动对齐中心!
  1. #
  2. #    文章の自動センタリング処理(RGSS3)
  3. #  (C)2011 TYPE74RX-T
  4. #

  5. #イベント:スクリプトに記入します。
  6. #rxmsg_ctr
  7. #センタリングさせたい文章の前に設定してください。
  8. #rxmsg
  9. #通常表示に戻します。








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

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

  25. class Game_Temp
  26.   #--------------------------------------------------------------------------
  27.   # ● 公開インスタンス変数
  28.   #--------------------------------------------------------------------------
  29.   attr_accessor :rx_message_centering     # 文章のセンタリング表示フラグ
  30.   #--------------------------------------------------------------------------
  31.   # ● オブジェクト初期化
  32.   #--------------------------------------------------------------------------
  33.   alias rx3_111216_initialize initialize
  34.   def initialize
  35.     rx3_111216_initialize # メソッド呼び戻し
  36.     @rx_message_centering = false
  37.   end
  38. end

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

  45. class Game_Interpreter
  46.   #--------------------------------------------------------------------------
  47.   # ★ センタリングフラグをオン
  48.   #--------------------------------------------------------------------------
  49.   def rxmsg_ctr
  50.     $game_temp.rx_message_centering = true
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ★ センタリングフラグをオフ
  54.   #--------------------------------------------------------------------------
  55.   def rxmsg
  56.     $game_temp.rx_message_centering = false
  57.   end
  58. end

  59. #==============================================================================
  60. # ■ Window_Base
  61. #------------------------------------------------------------------------------
  62. #  ゲーム中の全てのウィンドウのスーパークラスです。
  63. #==============================================================================

  64. class Window_Base < Window
  65.   #--------------------------------------------------------------------------
  66.   # ★ 各行ごとの X 座標を設定(センタリング用)
  67.   #--------------------------------------------------------------------------
  68.   def rx_set_text_xpos(text)
  69.     # メッセージを配列化して rx_textspl に入れる
  70.     rx_texts = text.sub("\n", " ")
  71.     rx_textspl = rx_texts.split(/\s+/)
  72.     @rx_text_count = 0
  73.     @rx_txt_widths = []
  74.     # 各行ごとの最終的な X 座標を配列に入れる
  75.     (0...rx_textspl.size).each do |i|
  76.       xps = (Graphics.width - 32 - contents.text_size(rx_textspl[i]).width) / 2
  77.       @rx_txt_widths.push(xps)
  78.     end
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 改行文字の処理
  82.   #--------------------------------------------------------------------------
  83.   alias rx3_111216_process_new_line process_new_line
  84.   def process_new_line(text, pos)
  85.     # ★ センタリングフラグが立っていたら表示行数をカウント
  86.     if rx3_message_centering?
  87.       @rx_text_count += 1
  88.       return if @rx_text_count == @rx_txt_widths.size
  89.     end
  90.     rx3_111216_process_new_line(text, pos) # メソッド呼び戻し
  91.     # ★ 改行後の X 座標をセンタリング
  92.     pos[:x] = @rx_txt_widths[@rx_text_count] if rx3_message_centering?
  93.   end
  94. end

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

  100. class Window_Message < Window_Base
  101.   #--------------------------------------------------------------------------
  102.   # ★ 各行ごとの X 座標を設定(センタリング用)
  103.   #--------------------------------------------------------------------------
  104.   def rx_set_text_xpos(text)
  105.     super(text)
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 全テキストの処理
  109.   #--------------------------------------------------------------------------
  110.   alias rx3_111216_process_all_text process_all_text
  111.   def process_all_text
  112.     # ★ センタリングフラグが立っていたら各行ごとの X 座標を設定
  113.     rx_set_text_xpos(convert_escape_characters($game_message.all_text)) if rx3_message_centering?
  114.     rx3_111216_process_all_text # メソッド呼び戻し
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 改行位置の取得
  118.   #--------------------------------------------------------------------------
  119.   alias rx3_111216_new_line_x new_line_x
  120.   def new_line_x
  121.     # センタリングフラグが立っていたらセンタリング
  122.     return @rx_txt_widths[@rx_text_count] if rx3_message_centering?
  123.     rx3_111216_new_line_x # メソッド呼び戻し
  124.   end
  125. end
复制代码

作者: 吾不知    时间: 2012-8-24 18:35
脚本 rxmsg_ctr
开始居中显示
脚本 rxmsg
恢复原始的显示
作者: Mic_洛洛    时间: 2012-8-24 22:12
话说如果只是几句话,用得着动脚本么= =||
打几个空格又不会死。。。
用图片显示又不会死。。。
同学,简单常用的方法才是好方法。。。何必舍易取难呢?
不会脚本的外插那么多脚本不是件好事,没准哪天会毁了你的工程的说= =||




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