Project1

标题: Plane#visible为什么总是返回true? [打印本页]

作者: taroxd    时间: 2014-7-4 12:56
标题: Plane#visible为什么总是返回true?
本帖最后由 taroxd 于 2014-7-4 14:20 编辑

为什么我对Plane执行visible方法总是返回true?

测试代码如下:
RUBY 代码复制
  1. a = Plane.new
  2. a.visible = false
  3. p a.visible # true


我需要这个值的原因是,我要按一个键改变可见状态,也就是 plane.visible ^= true
如果 visible 永远返回 true 的话,这样做完只会把平面的可见属性设为 false

只是要使用的话,这样就没有问题了

RUBY 代码复制
  1. class Plane_Base < Plane
  2.   #---------------------------------------------------------------------------
  3.   # ● 初始化
  4.   #---------------------------------------------------------------------------
  5.   def initialize(viewport = nil)
  6.     super
  7.     @__visible = true
  8.   end
  9.   #---------------------------------------------------------------------------
  10.   # ● 设置是否可见
  11.   #---------------------------------------------------------------------------
  12.   def visible=(visible)
  13.     super
  14.     @__visible = visible
  15.   end
  16.   #---------------------------------------------------------------------------
  17.   # ● 获取是否可见
  18.   #---------------------------------------------------------------------------
  19.   def visible
  20.     @__visible
  21.   end
  22. end


但谁能告诉我这是什么奇葩的事情?
作者: VIPArcher    时间: 2014-7-4 13:49
你可能得给a指定一个显示端口,否则默认全屏幕,全屏幕是默认可见的?
作者: taroxd    时间: 2014-7-4 13:52
VIPArcher 发表于 2014-7-4 13:49
你可能得给a指定一个显示端口,否则默认全屏幕,全屏幕是默认可见的?


这只是一个例子而已,实际上我是使用viewport的(虽然那个viewport也是全屏幕)

如果你要看我真正的用法,在这里:https://rpg.blue/thread-366825-1-1.html

是用我那个Plane_Base勉强解决的(定义在基础设置里面)

我想问问这是什么卧槽bug
作者: 菜鸟飞呀飞    时间: 2014-7-4 17:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: taroxd    时间: 2014-7-4 17:02
菜鸟飞呀飞 发表于 2014-7-4 17:01
tf = false
a = Plane.new
a.visible = tf

嗯,visible= 方法有效这个我知道。

我要的效果是 plane.visible ^= true ,即如果可见改为不可见,如果不可见改为可见。

我能想到最简单的办法就是上面那个子类定义了……
作者: 菜鸟飞呀飞    时间: 2014-7-4 17:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: taroxd    时间: 2014-7-4 17:12
菜鸟飞呀飞 发表于 2014-7-4 17:11
a.visible = !tf

逆转效果一样,何必再建一个类……

那不还是得需要一个实例变量么……

我的例子在3L
作者: taroxd    时间: 2014-7-4 18:18
菜鸟飞呀飞 发表于 2014-7-4 18:16
class Plane
  alias :n_visible= :visible=
  def visible=(tf)

那不是和我的一样么




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