Project1

标题: 可不可以菜单内新建一个显示少量文字的窗口? [打印本页]

作者: 诺亚之城    时间: 2013-10-12 12:40
标题: 可不可以菜单内新建一个显示少量文字的窗口?
本帖最后由 诺亚之城 于 2013-10-12 12:44 编辑



把游戏菜单、时间步数去掉,换成一个显示少量文字的窗口,

并且能够通过事件内写脚本,随时更改那些文字的内容。

作者: kuerlulu    时间: 2013-10-12 12:48
新做一个窗口然后把[游戏时间][步数]相关的内容换成那个窗口就行了,,这个脚本很容易写,而且教程也很多。。建议去技术区看看相关的改菜单 排版 新手教程
作者: 诺亚之城    时间: 2013-10-12 13:06
kuerlulu 发表于 2013-10-12 12:48
新做一个窗口然后把[游戏时间][步数]相关的内容换成那个窗口就行了,,这个脚本很容易写,而且教程也很多。 ...






弄成这个样子了,不会换行也不会在事件脚本内改它的文字。、
作者: myownroc    时间: 2013-10-12 13:35
在游戏一开始时运行一个脚本
  1. WINDOW_TEXT=""
复制代码
然后在事件中调用脚本
  1. WINDOW_TEXT="xxxxxxx"
复制代码
改变内容
refresh脚本中改为这个
  1. self.contents.draw_text(x,y,width,height,WINDOW_TEXT)
复制代码
至于换行,暂时还没想好(手机发帖怎么想得出来…)。
作者: 诺亚之城    时间: 2013-10-12 13:40
本帖最后由 诺亚之城 于 2013-10-12 15:24 编辑
myownroc 发表于 2013-10-12 13:35
在游戏一开始时运行一个脚本然后在事件中调用脚本改变内容
refresh脚本中改为这个至于换行,暂时还没想好( ...


全局变量么……是不是还要加上$啊。
换行好难的样子……

看来只能建立好几个不同的变量……每个变量一行了。
作者: chd114    时间: 2013-10-12 15:56
诺亚之城 发表于 2013-10-12 13:06
弄成这个样子了,不会换行也不会在事件脚本内改它的文字。、

改就是这么改法···换行的话在文字内容里面放\n就是换行
作者: chd114    时间: 2013-10-12 17:00
  1. class Bitmap
  2.   alias draw_text2 draw_text
  3.   def draw_text(*args)
  4.     case  args.size
  5.     when 2
  6.       rect = args[0]
  7.       text = args[1].split("\n")
  8.       auto = 0
  9.     when 3
  10.       rect = args[0]
  11.       text = args[1].split("\n")
  12.       auto = args[2]
  13.     when 5
  14.       rect = Rect.new(*(args[0,4]))
  15.       text = args[4].split("\n")
  16.       auto = 0
  17.     when 6
  18.       rect = Rect.new(*(args[0,4]))
  19.       text = args[4].split("\n")
  20.       auto = args[5]
  21.     else
  22.       raise ArgumentError,"错误的参数个数(#{args.size} to 2,3,5,6)."
  23.     end
  24.     wmax = [text.map{|t| self.text_size(t).width}.max,rect.width].min
  25.     h = self.text_size(text[0]).height
  26.     hmax = [h*text.size,rect.height].min
  27.     bmp = Bitmap.new(wmax,hmax)
  28.     bmp.font = self.font.clone
  29.     text.each_with_index{|t,i|
  30.       bmp.draw_text2(0,i*h,wmax,h,t,auto%3)
  31.     }
  32.     y = rect.y+(rect.height-bmp.height)/2
  33.     case auto%3
  34.     when 0
  35.       x = rect.x
  36.     when 1
  37.       x = rect.x+(rect.width-bmp.width)/2
  38.     when 2
  39.       x = rect.x+rect.width-bmp.width
  40.     end
  41.     self.blt(x,y,bmp,bmp.rect)
  42.     bmp.dispose
  43.     self
  44.   end
  45. end
复制代码
补充说明···你需要在工程里再放一个这个···(来自http://rpg.blue/thread-330587-1-1.html
作者: 芯☆淡茹水    时间: 2013-10-12 18:41
本帖最后由 芯☆淡茹水 于 2013-10-15 19:30 编辑

是不是这效果:
添加了手动换行和改颜色。如果不需手动换行,脚本会根据一行字限制的宽度或窗口的宽度自动换行。




范例:

Project1.rar (193.16 KB, 下载次数: 37)

范例里有一全局变量:$game_party.text   (方便储存)
要更改显示的文字时,只需要在 事件 -->  脚本里 , 写上:$game_party.text =  "显示的文字。"
无需换行,只需计算那么大的窗口能显示多少字(脚本里有字体大小设置)

最后PS一下:该范例可用于 物品详细信息介绍窗口 和 特技详细信息介绍窗口 的物品/特技的说明文字。

详见范例 --> 事件




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