查看: 2372|回复: 12

[已经解决] 如何将help显示的一行文字改成两行文字?

[复制链接]
梦石
0
星屑
50
在线时间
62 小时
注册时间
2016-5-4
回帖
11
发表于 2016-11-12 20:02:05 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
QQ图片20161112200036.png 就是这样的一个东西,怎么弄,求助
梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-11-12 23:53:27 | 显示全部楼层
这方面的脚本应该是有的,技术区找找。自动换行那类的。翻了下以前自己弄的,代码有些繁琐了。
QQ截图20161112235159.png

部分代码[pre lang="ruby"]class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # ● 设置文本
  #     text  : 窗口显示的字符串
  #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    # 如果文本和对齐方式的至少一方与上次的不同
    if text != @text or align != @align
      # 再描绘文本
      self.contents.clear
      self.contents.font.color = normal_color
      s=text.scan(/./);s1=30;spos=s[s1]#每行显示30个字
      if  !spos || s.size<=s1
      self.contents.draw_text(4, y, self.width - 40, 32, text)
      else
      ss1="";s1.times { |i|ss1+=s};ss2=spos
      (s1+1...s.size).each {|i|ss2+=s}
      self.contents.draw_text(4, y, self.width - 40, 32, ss1, align)
      self.contents.draw_text(4, y+32, self.width - 40, 32, ss2, align)
      end
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end[/pre]

评分

参与人数 1星屑 +150 梦石 +1 收起 理由
RyanBern + 150 + 1 认可答案

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2016-5-4
回帖
11
 楼主| 发表于 2016-11-13 10:57:02 | 显示全部楼层
夜狠简单 发表于 2016-11-12 23:53
这方面的脚本应该是有的,技术区找找。自动换行那类的。翻了下以前自己弄的,代码有些繁琐了。

昂,非常感谢
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2016-5-4
回帖
11
 楼主| 发表于 2016-11-13 12:01:05 | 显示全部楼层
夜狠简单 发表于 2016-11-12 23:53
这方面的脚本应该是有的,技术区找找。自动换行那类的。翻了下以前自己弄的,代码有些繁琐了。

QQ图片20161113120032.png 不过用在我这里字就没了,那么应该怎么做呢

点评

贴上您这部分的脚本来看看。可能是坐标问题,也可能是clear的问题,或者是那段脚本的bug  发表于 2016-11-13 12:39
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2016-5-4
回帖
11
 楼主| 发表于 2016-11-13 12:51:02 | 显示全部楼层
本帖最后由 灰啊灰 于 2016-11-13 13:43 编辑

QQ图片20161113125542.png
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2016-5-4
回帖
11
 楼主| 发表于 2016-11-13 13:44:31 | 显示全部楼层
灰啊灰 发表于 2016-11-13 12:01
不过用在我这里字就没了,那么应该怎么做呢

QQ图片20161113125542.png 脚本bug应该不会,因为我在别的工程里试过了

点评

昂,我不会回复点评,实在抱歉。按你的方法把28行少的添上去了可是和原来一样。被其他替代了应该也不会,因为除了这些我没弄过其他关于help的脚本   发表于 2016-11-13 18:03
昂,我不会回复点评,实在抱歉。按你的方法把28行少的添上去了可是和原来一样。被其他替代了应该也不会,因为除了这些我没弄过其他关于help的脚本   发表于 2016-11-13 18:03
搜一下 Window_Help 部分,还有28行少了 ,应该32, text, align )这样  发表于 2016-11-13 15:20
那么有可能是方法被取代了,你这样回复我收不到提醒。也刚回来  发表于 2016-11-13 15:18
回复

使用道具 举报

梦石
0
星屑
251
在线时间
252 小时
注册时间
2013-11-9
回帖
88
发表于 2016-11-15 22:54:37 | 显示全部楼层
你试下这个><~
可以修改的部分我加了○
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #==============================================================================

  6. class Window_Help < Window_Base
  7.         #--------------------------------------------------------------------------
  8.         # ● 初始化对像
  9.         #--------------------------------------------------------------------------
  10.         def initialize
  11.     # ○ 下面的252、96分别是指窗体的长和宽,可以根据游戏情况再修改一下
  12.                 super(0, 0, 252, 96)
  13.                 self.contents = Bitmap.new(width - 32, height - 32)
  14.         end
  15.         #--------------------------------------------------------------------------
  16.         # ● 设置文本
  17.         #     text  : 窗口显示的字符串
  18.         #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  19.         #--------------------------------------------------------------------------
  20.         def set_text(text, align = 0)
  21.                 # 如果文本和对齐方式的至少一方与上次的不同
  22.                 if text != @text or align != @align
  23.                         # 再描绘文本
  24.                         self.contents.clear
  25.                         self.contents.font.color = normal_color
  26.                         x = 0
  27.                         y = 0
  28.                         text = text.clone
  29.                         # 限制文字处理
  30.                         begin
  31.                                 last_text = text.clone
  32.                         end until text == last_text
  33.                         while ((c = text.slice!(/./m)) != nil)
  34.                                 # 如果一行写不下则自动换行
  35.                                 if x + self.contents.text_size(c).width > self.width - 32
  36.                                         y += 1
  37.                                         x = 0
  38.                                 end   
  39.                                 self.contents.draw_text(x, 32 * y, 40, 32, c)
  40.                                 # ○ 下面的 32 * y 中的32是可以更改的,如果你修改了默认的字体大小或者在这里修改了字体大小,可以酌情更改为28、26等数字
  41.                                 x += self.contents.text_size(c).width
  42.                                 @text = text
  43.                                 @align = align
  44.                                 @actor = nil
  45.                         end
  46.                 end  
  47.                 self.visible = true
  48.         end
  49.         #--------------------------------------------------------------------------
  50.         # ● 设置角色
  51.         #     actor : 要显示状态的角色
  52.         #--------------------------------------------------------------------------
  53.         def set_actor(actor)
  54.                 if actor != @actor
  55.                         self.contents.clear
  56.                         draw_actor_name(actor, 4, 0)
  57.                         draw_actor_state(actor, 140, 0)
  58.                         draw_actor_hp(actor, 284, 0)
  59.                         draw_actor_sp(actor, 460, 0)
  60.                         @actor = actor
  61.                         @text = nil
  62.                         self.visible = true
  63.                 end
  64.         end
  65.         #--------------------------------------------------------------------------
  66.         # ● 设置敌人
  67.         #     enemy : 要显示名字和状态的敌人
  68.         #--------------------------------------------------------------------------
  69.         def set_enemy(enemy)
  70.                 text = enemy.name
  71.                 state_text = make_battler_state_text(enemy, 112, false)
  72.                 if state_text != ""
  73.                         text += "  " + state_text
  74.                 end
  75.                 set_text(text, 1)
  76.         end
  77. end
复制代码
我觉得不显示文字的原因可能是因为你的窗体太小了……你可以试着改大一点。
头像来自百度搜索,自改了一(小)部分。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
62 小时
注册时间
2016-5-4
回帖
11
 楼主| 发表于 2016-11-18 20:32:13 | 显示全部楼层

嗯昂,我贴过去改了一下,然后达到了想要的效果。十分感谢 QQ图片20161118203238.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部