Project1

标题: 怎么让text在某个窗口居中 【已解决】 [打印本页]

作者: sq333333    时间: 2017-9-7 16:04
标题: 怎么让text在某个窗口居中 【已解决】
本帖最后由 sq333333 于 2017-9-9 16:25 编辑

小白自己尝试修改了一下脚本,
不知道文字在窗口居中效果怎么写,
或者让窗口的宽度根据文字长度自动变化…
还有怎么让显示的窗口能变成系统对话框那种暗色背景的。
请大神多多指点!





作者: 魔法丶小肉包    时间: 2017-9-8 18:27
第一种情况:使用显示文字
1.打几个空格就行了
2.
RUBY 代码复制
  1. class Window_Message < Window_Base
  2.   def fiber_main
  3.     update_width
  4.     $game_message.visible = true
  5.     update_background
  6.     update_placement
  7.     loop do
  8.       process_all_text if $game_message.has_text?
  9.       process_input
  10.       $game_message.clear
  11.       @gold_window.close
  12.       Fiber.yield
  13.       break unless text_continue?
  14.     end
  15.     close_and_wait
  16.     $game_message.visible = false
  17.     @fiber = nil
  18.   end
  19.   def update_width
  20.     self.width = $game_message.texts[0].size * 30
  21.   end
  22. end

3.选择暗色背景

第二种情况:自己写窗口
1.
RUBY 代码复制
  1. text = "哈哈哈哈哈"
  2. draw_text(x, y, width, line_height, text,1)

也同样可以自己打空格
2.
RUBY 代码复制
  1. self.width = text.size * 30

3.
RUBY 代码复制
  1. def create_back_bitmap
  2.     @back_bitmap = Bitmap.new(width, height)
  3.     rect1 = Rect.new(0, 0, width, 12)
  4.     rect2 = Rect.new(0, 12, width, height - 24)
  5.     rect3 = Rect.new(0, height - 12, width, 12)
  6.     @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
  7.     @back_bitmap.fill_rect(rect2, back_color1)
  8.     @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
  9.   end
  10.   def back_color1
  11.     Color.new(0, 0, 0, 160)
  12.   end
  13.   def back_color2
  14.     Color.new(0, 0, 0, 0)
  15.   end
  16.   def create_back_sprite
  17.     @back_sprite = Sprite.new
  18.     @back_sprite.bitmap = @back_bitmap
  19.     @back_sprite.visible = true
  20.     @back_sprite.z = z - 1
  21.   end
  22.   def dispose
  23.     super
  24.     @back_bitmap.dispose
  25.     @back_sprite.dispose
  26.   end


如果是第二种情况(自己写窗口),上面已经说了大概的思路
这里还是举个例子:
RUBY 代码复制
  1. class A < Window_Base
  2.   def initialize
  3.     super(0,0,544,120)
  4.     create_back_bitmap
  5.     create_back_sprite
  6.     self.opacity = 0
  7.     refresh
  8.   end
  9.   def refresh
  10.     text = "哈哈哈哈哈"
  11.     self.width = text.size * 30
  12.     draw_text(x, y, width, line_height, text,1)
  13.   end
  14.   def create_back_bitmap
  15.     @back_bitmap = Bitmap.new(width, height)
  16.     rect1 = Rect.new(0, 0, width, 12)
  17.     rect2 = Rect.new(0, 12, width, height - 24)
  18.     rect3 = Rect.new(0, height - 12, width, 12)
  19.     @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
  20.     @back_bitmap.fill_rect(rect2, back_color1)
  21.     @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
  22.   end
  23.   def back_color1
  24.     Color.new(0, 0, 0, 160)
  25.   end
  26.   def back_color2
  27.     Color.new(0, 0, 0, 0)
  28.   end
  29.   def create_back_sprite
  30.     @back_sprite = Sprite.new
  31.     @back_sprite.bitmap = @back_bitmap
  32.     @back_sprite.visible = true
  33.     @back_sprite.z = z - 1
  34.   end
  35.   def dispose
  36.     super
  37.     @back_bitmap.dispose
  38.     @back_sprite.dispose
  39.   end
  40. end

作者: sq333333    时间: 2017-9-8 18:57
魔法丶小肉包 发表于 2017-9-8 18:27
第一种情况:使用显示文字
1.打几个空格就行了
2.

谢谢肉包大神,一直在帮我们小白。 真舍不得6R和你们这些大神呀。不知道将来论坛会搬去哪里……
作者: sq333333    时间: 2017-9-8 21:31
本帖最后由 sq333333 于 2017-9-8 21:33 编辑

这个图片是我自己修改的显示技能名,因为技能名字有长有短,所以有时无法正常显示,我还是不会举一反三(完全没有基础…)。所以…还请大神在这个基础上加以修改,使窗口可以适应技能名字长短并且始终居中显示,或者直接改成暗色背景居中显示技能名呢?(有点得寸进尺的感觉……)

IMG_20170908_212445.jpg (114.72 KB, 下载次数: 18)

IMG_20170908_212445.jpg

作者: sq333333    时间: 2017-9-9 16:25
魔法丶小肉包 发表于 2017-9-8 18:27
第一种情况:使用显示文字
1.打几个空格就行了
2.

谢谢肉包,已经解决啦!




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