Project1

标题: 关于全屏显示文字 [打印本页]

作者: AVENTZERO    时间: 2013-11-1 08:51
标题: 关于全屏显示文字
我是脚本初学者,想做个全屏显示文字的功能要怎么做?
本身对话框自带的暗色背景上功能那种样子,我希望按照指定的尺寸(如400*300)的暗色框内显示文字
文字也会自动换行,请问我该怎么做呢?
作者: AVENTZERO    时间: 2013-11-3 12:06
本帖最后由 76213585 于 2013-11-2 21:09 编辑

@喵呜喵5
按确定键
作者: 余烬之中    时间: 2013-11-3 12:11
本帖最后由 余烬之中 于 2013-11-3 13:48 编辑

其实这是我计划上周做的项目…………可是因为种种原因,只做了一半就拖到了现在……
——————
@喵呜喵5 不是自动换行……那个早就实现了【书籍系统 http://rpg.blue/thread-337128-1-1.html
我现在要做的是调用精灵(感觉我学的很没有章法……因为也没有什么教程,前不久才知道这是ruby…………)
在Window_Base里有(这两个不是重点):
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取行高
  3.   #--------------------------------------------------------------------------
  4.   def line_height
  5.     return 24
  6.   end

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 计算窗口显示指定行数时的应用高度
  3.   #--------------------------------------------------------------------------
  4.   def fitting_height(line_number)
  5.     line_number * line_height + standard_padding * 2
  6.   end


重点在这里

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 计算行高
  3.   #     restore_font_size : 计算完成后是否恢复原本的字体尺寸?
  4.   #--------------------------------------------------------------------------
  5.   def calc_line_height(text, restore_font_size = true)
  6.     result = [line_height, contents.font.size].max
  7.     last_font_size = contents.font.size
  8.     text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc|
  9.       make_font_bigger  if esc == "\e{"
  10.       make_font_smaller if esc == "\e}"
  11.       result = [result, contents.font.size].max
  12.     end
  13.     contents.font.size = last_font_size if restore_font_size
  14.     result
  15.   end



滚动文字窗口中是这样的
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 更新绘制所有内容所需的高度
  3.   #--------------------------------------------------------------------------
  4.   def update_all_text_height
  5.     @all_text_height = 1
  6.     convert_escape_characters(@text).each_line do |line|
  7.       @all_text_height += calc_line_height(line, false)
  8.     end
  9.     reset_font_settings
  10.   end

它会先调用convert_escape_characters
所以在这个方法中加上换行就可以了(很繁琐,先绘制一遍再保存,效率更是渣,不过用起来倒不会卡,也不显得慢,如果不死认脚本,人类是察觉不到的)
作者: 喵呜喵5    时间: 2013-11-3 12:11
本帖最后由 喵呜喵5 于 2013-11-3 13:37 编辑
AVENTZERO 发表于 2013-11-3 12:06
@喵呜喵5
按确定键


窗口的尺寸是整个游戏中都不变还是随着自己的需要在游戏中也会发生改变?

=============================================================================

不,我说的是滚动文字窗口的自动换行,
滚动文字窗口的高度是按照所给的文字行数及其大小自动计算的,自动换行以后行数不就发生改变了?

@余烬之中  
作者: AVENTZERO    时间: 2013-11-3 12:37
求LS大神指点!
作者: AVENTZERO    时间: 2013-11-3 12:38
喵呜喵5 发表于 2013-11-3 12:11
窗口的尺寸是整个游戏中都不变还是随着自己的需要在游戏中也会发生改变? ...


其实我想要脚本调用显示文字并实现全屏   $w = Window_ShowText(窗口宽度,窗口高度,文字边界宽(自动换行用这样可以超过4行),类型(普通,暗块,透明),文字("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"))   
但是显示文字这个功能本身是事件内的,就不知道怎么修改了=-=
我参考了索引区的显示文字自动换行脚本,但是我不会直接用脚本调用,应该需要再写个def?
作者: AVENTZERO    时间: 2013-11-4 16:34
喵呜喵5 发表于 2013-11-3 12:11
窗口的尺寸是整个游戏中都不变还是随着自己的需要在游戏中也会发生改变?

============================ ...

嗷!其实我想要显示文字中的那种字一点点打出来的效果,当然还有就是能够达到居中显示,左对齐右对齐,还有就是背景可以替换素材,其实想了下就是各显示文字框,但是只是是多行的,放大的
作者: 喵呜喵5    时间: 2013-11-4 16:44
AVENTZERO 发表于 2013-11-4 16:34
嗷!其实我想要显示文字中的那种字一点点打出来的效果,当然还有就是能够达到居中显示,左对齐右对齐,还有就 ...

为了防止楼主连帖太严重于是用回复

其实其他的要求都挺好实现的,比较蛋疼的是居中显示、居右显示以及按确定键关闭窗口……
作者: tseyik    时间: 2013-11-4 17:05
本帖最后由 tseyik 于 2013-11-4 17:20 编辑

改以圖片顯示文字比較方便
圖片擴張脚本

作者: AVENTZERO    时间: 2013-11-4 19:37
喵呜喵5 发表于 2013-11-4 16:44
为了防止楼主连帖太严重于是用回复

其实其他的要求都挺好实现的,比较蛋疼的是居中显示、居右显示以及按 ...

class Window_ALLMessage < Window_Message
这样重写我能够复刻一个显示文字的功能吗?
我该在事件脚本中怎么调用????    $dialog = Window_ALLMessage.new   ?
然后我又该怎么显示文字呢>??      dialog.process_character(text.slice!(0, 1), text, pos) until text.empty?


作者: AVENTZERO    时间: 2013-11-4 20:15
余烬之中 发表于 2013-11-3 12:11
其实这是我计划上周做的项目…………可是因为种种原因,只做了一半就拖到了现在……
——————
@喵呜喵5 ...

result.gsub!(/\en/i)          { }  使用\n 强制换行的话,里面代码些什么?我直接调用process_new_line(text, pos)无效=-=pos要怎么获取?
作者: tseyik    时间: 2013-11-4 20:47
預設変数8内的数値決定文字顕示速度
越大越慢
1=正常
  1. #==============================================================================
  2. # ★ RGSS3_メッセージ効果音 Ver1.1
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)

  7. 文章の表示コマンド実行時、文字の表示と一緒に効果音を鳴らします。

  8. 制御文字 \B を使って効果音を再生するかどうかを設定できます。
  9. \B が出てくるたびに切り替わりますが AUTO_SE が true の場合は
  10. 最初から効果音が鳴る状態になっています。

  11. おまけ機能として文章の表示速度を変更することができます。
  12. 設定したゲーム変数(初期設定では8番)の値が大きければ大きいほど
  13. 表示速度は遅くなります。1 がデフォルトの速度で最低値です。

  14. 使用するゲーム変数(初期設定)
  15.   0008
  16.   
  17. 2012.01.22  Ver1.1
  18.   おまけ機能の文章表示速度変更を追加
  19.   
  20. 2012.01.21  Ver1.0
  21.   公開

  22. =end

  23. #==============================================================================
  24. # □ 設定項目
  25. #==============================================================================
  26. module TMMESSAGESE
  27.   MESSAGE_SE = RPG::SE.new("Cursor1", 80, 150)    # 再生される効果音
  28.   AUTO_SE = true    # true で自動的に再生、false で制御文字があったときのみ再生
  29.   
  30.   VN_MESSAGE_WAIT = 8   # 文章の表示速度として扱うゲーム変数番号
  31. end

  32. #==============================================================================
  33. # ■ Window_Message
  34. #==============================================================================
  35. class Window_Message
  36.   #--------------------------------------------------------------------------
  37.   # ● フラグのクリア
  38.   #--------------------------------------------------------------------------
  39.   alias tmmessagese_window_message_clear_flags clear_flags
  40.   def clear_flags
  41.     tmmessagese_window_message_clear_flags
  42.     @se_flag = TMMESSAGESE::AUTO_SE
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 一文字出力後のウェイト
  46.   #--------------------------------------------------------------------------
  47.   alias tmessagese_window_message_wait_for_one_character wait_for_one_character
  48.   def wait_for_one_character
  49.     [$game_variables[TMMESSAGESE::VN_MESSAGE_WAIT], 1].max.times do |i|
  50.       tmessagese_window_message_wait_for_one_character
  51.     end
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 通常文字の処理
  55.   #--------------------------------------------------------------------------
  56.   alias tmmessagese_window_message_process_normal_character process_normal_character
  57.   def process_normal_character(c, pos)
  58.     tmmessagese_window_message_process_normal_character(c, pos)
  59.     TMMESSAGESE::MESSAGE_SE.play if @se_flag
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 制御文字の処理
  63.   #     code : 制御文字の本体部分(「\C[1]」なら「C」)
  64.   #     text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
  65.   #     pos  : 描画位置 {:x, :y, :new_x, :height}
  66.   #--------------------------------------------------------------------------
  67.   alias tmmessage_window_message_process_escape_character process_escape_character
  68.   def process_escape_character(code, text, pos)
  69.     case code.upcase
  70.     when 'B'
  71.       @se_flag ^= true
  72.     else
  73.       tmmessage_window_message_process_escape_character(code, text, pos)
  74.     end
  75.   end
  76. end


复制代码

作者: 喵呜喵5    时间: 2013-11-4 21:40
自动换行
http://rpg.blue/home.php?mod=spa ... o=blog&id=11571
打字效果
http://rpg.blue/thread-333750-1-1.html




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