设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1872|回复: 3
打印 上一主题 下一主题

[已经解决] 在什么情况下Window类的visible属性更改会无效?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
帖子
272
跳转到指定楼层
1
发表于 2018-10-29 11:14:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 Mono_kyrin 于 2018-10-29 11:16 编辑

比如一个用来显示战斗状态窗口的Window_BattleStatus类的构造函数大概是长这样的:
RUBY 代码复制
  1. class Window_BattleStatus < Window_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     super(0, 320, 640, 160)
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.     #........................................................................
  9.     self.windowskin = nil
  10.     @sta_back = []
  11.     @sta_output = []
  12.     @states_icons = []
  13.     @state_icon_p = []
  14.     @hp_bitmap = loadbitmap("Graphics/CP/hp.png")#// HP條
  15.     @mp_bitmap = loadbitmap("Graphics/CP/mp.png")#// MP條
  16.     @ap_bitmap = loadbitmap("Graphics/CP/AP.png")#// AP條
  17.     for i in 0...$game_party.actors.size
  18.       actor = $game_party.actors[i]
  19.       #//Background
  20.       @sta_back[i] = Sprite.new
  21.       @sta_back[i].bitmap = loadbitmap("Graphics/CP/" +actor.name+"_平时.png")
  22.       @sta_back[i].x = 2 + i * 155
  23.       @sta_back[i].y = 382
  24.       @sta_back[i].z = self.z + 1
  25.       #//State
  26.       @states_icons[i] = Sprite.new
  27.       @state_icon_p[i] = 0
  28.       @states_icons[i].x = i * 155 + 85
  29.       @states_icons[i].y = 400
  30.       @states_icons[i].z = 999
  31.       st = $game_party.actors[i].states[@state_icon_p[i]]
  32.       unless st.nil?
  33.         path = "Graphics/States/#{st}.png"
  34.         @states_icons[i].bitmap = loadbitmap(path)
  35.       end
  36.       #//Bars
  37.       @sta_output[i] = Sprite.new
  38.       @sta_output[i].bitmap = Bitmap.new(150, 78)
  39.       @sta_output[i].x = 2 + i * 155
  40.       @sta_output[i].y = 480 - 85
  41.       @sta_output[i].z = self.z + 2
  42.       @sta_output[i].bitmap.font.name = "黑体"
  43.     end
  44.     @level_up_flags = [false, false, false, false]
  45.     #........................................................................
  46.     refresh
  47.   end

然后调用@status_window = Window_BattleStatus.new 方法以后,调整@status_window.visible = false, 这个窗口并没有消失是什么情况……

Lv6.析梦学徒

老鹰

梦石
40
星屑
34755
在线时间
6741 小时
注册时间
2012-5-26
帖子
3259

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

3
发表于 2018-10-29 15:15:09 | 只看该作者
看到标题的第一眼,还以为是询问
窗口的opacity=0时,visible=true无效(不这太傻了)

你也可以重定义窗口的visible=方法,在里面加上对你新增的全部精灵的visible的设置
原理同楼上,强行让精灵和窗口关联起来
alias eagle_visible visible=
def visible=(f)
  eagle_visible(f)
  sprite.visible = f
end

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39034
在线时间
5725 小时
注册时间
2006-11-10
帖子
6622
2
发表于 2018-10-29 12:00:27 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-10-29 12:04 编辑

因为你隐藏的是窗口, 没隐藏那些精灵啊.........

你这样写, 图片是独立的精灵实例(Sprite.new)哦, 它和你的Window_BattleStatus.new 这个实例没关系, 你隐藏窗口当然对它们没影响, 要隐藏它们就要一个一个去  精灵实例.visible = false

要图片 文字什么的 在窗口里显示, 要把它们放到窗口自己的矩形(contents)里,

栗子:

图片:  self.contents.blt(x, y, 图片矩形, Rect.new(x, y,width,height),opacity)

文字: self.contents.draw_text(x,y,width,height, 显示的字符串, 对齐0左 1中 2右)

点评

成功了,谢谢大佬www  发表于 2018-10-29 13:02

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-30 20:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表