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里有(这两个不是重点):
#--------------------------------------------------------------------------
# ● 获取行高
#--------------------------------------------------------------------------
def line_height
return 24
end
#--------------------------------------------------------------------------
# ● 获取行高
#--------------------------------------------------------------------------
def line_height
return 24
end
#--------------------------------------------------------------------------
# ● 计算窗口显示指定行数时的应用高度
#--------------------------------------------------------------------------
def fitting_height(line_number)
line_number * line_height + standard_padding * 2
end
#--------------------------------------------------------------------------
# ● 计算窗口显示指定行数时的应用高度
#--------------------------------------------------------------------------
def fitting_height(line_number)
line_number * line_height + standard_padding * 2
end
重点在这里
#--------------------------------------------------------------------------
# ● 计算行高
# restore_font_size : 计算完成后是否恢复原本的字体尺寸?
#--------------------------------------------------------------------------
def calc_line_height(text, restore_font_size = true)
result = [line_height, contents.font.size].max
last_font_size = contents.font.size
text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc|
make_font_bigger if esc == "\e{"
make_font_smaller if esc == "\e}"
result = [result, contents.font.size].max
end
contents.font.size = last_font_size if restore_font_size
result
end
#--------------------------------------------------------------------------
# ● 计算行高
# restore_font_size : 计算完成后是否恢复原本的字体尺寸?
#--------------------------------------------------------------------------
def calc_line_height(text, restore_font_size = true)
result = [line_height, contents.font.size].max
last_font_size = contents.font.size
text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc|
make_font_bigger if esc == "\e{"
make_font_smaller if esc == "\e}"
result = [result, contents.font.size].max
end
contents.font.size = last_font_size if restore_font_size
result
end
滚动文字窗口中是这样的
#--------------------------------------------------------------------------
# ● 更新绘制所有内容所需的高度
#--------------------------------------------------------------------------
def update_all_text_height
@all_text_height = 1
convert_escape_characters(@text).each_line do |line|
@all_text_height += calc_line_height(line, false)
end
reset_font_settings
end
#--------------------------------------------------------------------------
# ● 更新绘制所有内容所需的高度
#--------------------------------------------------------------------------
def update_all_text_height
@all_text_height = 1
convert_escape_characters(@text).each_line do |line|
@all_text_height += calc_line_height(line, false)
end
reset_font_settings
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=正常- #==============================================================================
- # ★ RGSS3_メッセージ効果音 Ver1.1
- #==============================================================================
- =begin
- 作者:tomoaky
- webサイト:ひきも記 (http://hikimoki.sakura.ne.jp/)
- 文章の表示コマンド実行時、文字の表示と一緒に効果音を鳴らします。
- 制御文字 \B を使って効果音を再生するかどうかを設定できます。
- \B が出てくるたびに切り替わりますが AUTO_SE が true の場合は
- 最初から効果音が鳴る状態になっています。
- おまけ機能として文章の表示速度を変更することができます。
- 設定したゲーム変数(初期設定では8番)の値が大きければ大きいほど
- 表示速度は遅くなります。1 がデフォルトの速度で最低値です。
- 使用するゲーム変数(初期設定)
- 0008
-
- 2012.01.22 Ver1.1
- おまけ機能の文章表示速度変更を追加
-
- 2012.01.21 Ver1.0
- 公開
- =end
- #==============================================================================
- # □ 設定項目
- #==============================================================================
- module TMMESSAGESE
- MESSAGE_SE = RPG::SE.new("Cursor1", 80, 150) # 再生される効果音
- AUTO_SE = true # true で自動的に再生、false で制御文字があったときのみ再生
-
- VN_MESSAGE_WAIT = 8 # 文章の表示速度として扱うゲーム変数番号
- end
- #==============================================================================
- # ■ Window_Message
- #==============================================================================
- class Window_Message
- #--------------------------------------------------------------------------
- # ● フラグのクリア
- #--------------------------------------------------------------------------
- alias tmmessagese_window_message_clear_flags clear_flags
- def clear_flags
- tmmessagese_window_message_clear_flags
- @se_flag = TMMESSAGESE::AUTO_SE
- end
- #--------------------------------------------------------------------------
- # ● 一文字出力後のウェイト
- #--------------------------------------------------------------------------
- alias tmessagese_window_message_wait_for_one_character wait_for_one_character
- def wait_for_one_character
- [$game_variables[TMMESSAGESE::VN_MESSAGE_WAIT], 1].max.times do |i|
- tmessagese_window_message_wait_for_one_character
- end
- end
- #--------------------------------------------------------------------------
- # ● 通常文字の処理
- #--------------------------------------------------------------------------
- alias tmmessagese_window_message_process_normal_character process_normal_character
- def process_normal_character(c, pos)
- tmmessagese_window_message_process_normal_character(c, pos)
- TMMESSAGESE::MESSAGE_SE.play if @se_flag
- end
- #--------------------------------------------------------------------------
- # ● 制御文字の処理
- # code : 制御文字の本体部分(「\C[1]」なら「C」)
- # text : 描画処理中の文字列バッファ(必要なら破壊的に変更)
- # pos : 描画位置 {:x, :y, :new_x, :height}
- #--------------------------------------------------------------------------
- alias tmmessage_window_message_process_escape_character process_escape_character
- def process_escape_character(code, text, pos)
- case code.upcase
- when 'B'
- @se_flag ^= true
- else
- tmmessage_window_message_process_escape_character(code, text, pos)
- end
- end
- 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 |