查看: 1629|回复: 2

[已经解决] 刚在学习窗口脚本,碰到了个问题请教一下

[复制链接]
梦石
0
星屑
151
在线时间
85 小时
注册时间
2012-9-27
回帖
6
发表于 2014-8-3 12:14:17 | 显示全部楼层 |阅读模式

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

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

×
有设置了一个变量用于控制时段,不过只有变量值为0的时候才显示“上午”,其余均没有显示
是不是我本身的方式就不对了,情况如下所示,烦请指教一下。
  1. class Window_day < Window_Base
  2.   
  3.   def initialize
  4.     super(0, 0, 200, 200)
  5.     self.opacity = 0
  6.     refresh
  7.   end
  8.   
  9.     def update
  10.     super
  11.     refresh
  12.   end
  13.   
  14.   def refresh
  15.     self.contents.clear
  16.     self.contents.draw_text(0, 0, 100, 24, "第#{$game_variables[98]}天")
  17.         case $game_variables[99]
  18.         when 3
  19.          a1 = "深夜"
  20.         when 2
  21.          a1 = "夜晚"
  22.         when 1
  23.          a1 = "下午"
  24.         when 0
  25.          a1 = "上午"
  26.     self.contents.draw_text(0, 32, 100, 24, a1)
  27.     end
  28.   end
  29. end
复制代码
QQ截图20140803121123.png
上午可以显示
QQ截图20140803121144.png
QQ截图20140803121155.png
下午以后的就都没有了……

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-8-3 12:49:41 | 显示全部楼层
本帖最后由 喵呜喵5 于 2014-8-3 12:52 编辑

case的用法搞错了,你原本的代码中只有case when 0的时候才执行第二个draw_text方法,代码改成下面这样
  1.   def refresh
  2.     self.contents.clear
  3.     self.contents.draw_text(0, 0, 100, 24, "第#{$game_variables[98]}天")
  4.     case $game_variables[99]
  5.     when 3
  6.       a1 = "深夜"
  7.     when 2
  8.       a1 = "夜晚"
  9.     when 1
  10.       a1 = "下午"
  11.     when 0
  12.       a1 = "上午"
  13.     else
  14.       a1 = nil
  15.     end
  16.     self.contents.draw_text(0, 32, 100, 24, a1) if a1
  17.   end
复制代码
或者这样

[pre lang="ruby" line="1"]  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, 100, 24, "第#{$game_variables[98]}天")
    case $game_variables[99]
    when 3
      a1 = "深夜"
      self.contents.draw_text(0, 32, 100, 24, a1)
    when 2
      a1 = "夜晚"
      self.contents.draw_text(0, 32, 100, 24, a1)
    when 1
      a1 = "下午"
      self.contents.draw_text(0, 32, 100, 24, a1)
    when 0
      a1 = "上午"
      self.contents.draw_text(0, 32, 100, 24, a1)
    end   
  end[/pre]

另外描绘文字需要花费一定的时间,因此refresh不建议放到update里面实时刷新,只有当这两个变量发生改变的时候再刷新

点评

十分感谢!我明白错在哪个地方了  发表于 2014-8-3 13:48

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 耐心讲解case,when的用法对新手帮助很大.

查看全部评分

回复

使用道具 举报

史莱姆的信徒
12-B

梦石
0
星屑
53
在线时间
368 小时
注册时间
2013-8-14
回帖
909
发表于 2014-8-3 17:23:21 | 显示全部楼层
你为什么不直接丢在update里面(ΦωΦ)
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部