Project1
标题:
在窗口中读取TXT文件,如何把txt内容输出在窗口中?
[打印本页]
作者:
new1984
时间:
2008-10-13 21:23
标题:
在窗口中读取TXT文件,如何把txt内容输出在窗口中?
类似于字幕脚本吧,不过要循环txt内容,而且是打开菜单自动在窗口中出现,不需要scene吧?
刚看了主站上的读取 txt 教程,可惜范例不能下... 就是那个单词游戏{/dk}
f = File.open("*.txt")
ls=f.readlines
for i in 0...ls.size
end
复制代码
在这个循环中,怎么把读到的内容输出在窗口 并且 读完再执行这个循环???{/gg} [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
trentswd
时间:
2008-10-13 21:53
……没研究过file类
不过如果是在窗口中显示的话,假设f是保存文本的字符串,那么就用slice!(/./m)每次取一个字符,然后在0,0处显示,显示完增加x坐标【假设c是取的字符,那么就增加contents.text_size(c).width】,让第二个字在第一个字后面显示,当每行的像素接近contents的宽度时就换行,加y值,遇到/n时也换行……这样循环……大概就是这样…… [LINE]1,#dddddd[/LINE]
版主对此帖的认可:『与先前被删帖子中补回100积分。』,积分『+100』。
[LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
new1984
时间:
2008-10-13 22:18
谢谢回答,如果字符较多,这样处理会不会有点....
我琢磨得换一种做法....但是似乎本事不够,把字幕改了很多遍 都不行.
菜单界面下方 会有一个小窗口,显示游戏帮助(window_help?)...这个样子{/dk}
作者:
trentswd
时间:
2008-10-13 22:26
Window_help默认只有一行……所以……不需要考虑换行……自然不用一个一个提取……
txt过大的话,就分段读取吧……
其实http://rpg.blue/web/htm/news790.htm这个比较好……
作者:
new1984
时间:
2008-10-13 22:36
书馆这个我试过.....问题还在于自动输出在窗口......
突然冒出个想法,不知道行不行:{/gg}就是在呼出菜单的时候同时呼出书馆界面(当然会修改成我要的窗口大小),这个如果可行的话,难度就不大了.......{/dk}
作者:
trentswd
时间:
2008-10-13 23:13
如果你只是要help_window来显示帮助的话……2l的方法就可以了……脚本效率足够处理完
书馆不要用它的窗口啊……把他提取文本的方法弄下来就可以……不过看了看貌似也是那方法……
作者:
new1984
时间:
2008-10-13 23:26
把字幕的脚本改了, 把透明设了,字幕却不出?
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
#——————————————————————————————————————
# Scene_Credit 制作人员名单
#——————————————————————————————————————
#——使用注意:默认会返回地图,如果需要返回开头,请将本脚本中的
#return_scene = Scene_Map.new改为return_scene = Scene_Title.new
class Scene_Credit
CREDIT=<<_END_
-----Cast------
制作工具:RPG Maker XP
先帝创业未半而中道崩殂
今天下三分,益州疲弊
此诚危急存亡之秋也
然侍卫之臣不懈于内,忠志之士忘身于外者
盖追先帝之殊遇,欲报之于陛下也
诚宜开张圣听,以光先帝遗德,恢弘志士之气
不宜妄自菲薄,引喻失义,以塞忠谏之路也
宫中府中,俱为一体,陟罚臧否,不宜异同
若有作奸犯科及为忠善者
宜付有司论其刑赏,以昭陛下平明之理
不宜偏私,使内外异法也。
侍中侍郎郭攸之、费祎、董允等
此皆良实,志虑忠纯,是以先帝简拔以遗陛下
愚以为宫中之事,事无大小,悉以咨之,然后施行
必能裨补阙漏,有所广益。
_END_
end
class Scene_Credit
def initialize(return_scene = nil)
@bh = Window_Bh.new
if return_scene.nil?
return_scene = Scene_Map.new
end
@return_scene = return_scene
end
def scene_start
credit_lines = CREDIT.split(/\n/)
credit_bitmap = Bitmap.new(640,32 * credit_lines.size)
credit_lines.each_index do |i|
line = credit_lines[i]
credit_bitmap.draw_text(0,i * 32,640,32,line,1)
end
@credit_sprite = Sprite.new(Viewport.new(0,50,640,380))
@credit_sprite.bitmap = credit_bitmap
@credit_sprite.oy = -430
@frame_index = 0
@last_flag = false
end
def scene_end
@credit_sprite.dispose
end
def last?
return (@frame_index >= @credit_sprite.bitmap.height + 480)
end
def last
if not @last_flag
Audio.bgm_fade(10000)
@last_flag = true
@last_count = 0
else
@last_count += 1
end
if @last_count >= 300
$scene = @return_scene
end
end
def update
@frame_index += 1
return if cancel?
last if last?
@credit_sprite.oy += 1
end
def cancel?
if Input.trigger?(Input::B)
$scene = @return_scene
return true
end
return false
end
def main
scene_start
# 过渡
Graphics.transition
# 主循环
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
# 准备过渡
@bh.dispose
Graphics.freeze
scene_end
end
class Window_Bh < Window_Base
def initialize
super(100,246,480,235)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity =0
refresh
end
def refresh
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1