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

Project1

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

[已经解决] Plane#visible为什么总是返回true?

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

跳转到指定楼层
1
发表于 2014-7-4 12:56:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 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


但谁能告诉我这是什么奇葩的事情?

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10073
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

2
发表于 2014-7-4 13:49:13 | 只看该作者
你可能得给a指定一个显示端口,否则默认全屏幕,全屏幕是默认可见的?
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
 楼主| 发表于 2014-7-4 13:52:34 | 只看该作者
VIPArcher 发表于 2014-7-4 13:49
你可能得给a指定一个显示端口,否则默认全屏幕,全屏幕是默认可见的?


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

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

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

我想问问这是什么卧槽bug

点评

XP的oy只能上移不能下移是一件很坑的事情,所以这样的需求我也是使用Sprite制作的,一般情况下两个就够了,不需要受Plane的气  发表于 2014-7-4 21:54
似乎可以呢。先做好一张0~9拼起来的Bitmap,然后装在Plane里面  发表于 2014-7-4 14:15
啊,我说的就是循环效果,就是之前那个翻页显示文字的问题  发表于 2014-7-4 14:12
不是滚动效果,是循环效果,就像远景图无限循环一样(事实上远景图就是Plane)  发表于 2014-7-4 14:08
你把update_bitmap这个方法用手或者脑子执行一遍应该就能懂了……  发表于 2014-7-4 14:08
回复 支持 反对

使用道具 举报

菜鸟飞呀飞 该用户已被删除
4
发表于 2014-7-4 17:01:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
 楼主| 发表于 2014-7-4 17:02:57 | 只看该作者
菜鸟飞呀飞 发表于 2014-7-4 17:01
tf = false
a = Plane.new
a.visible = tf

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

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

我能想到最简单的办法就是上面那个子类定义了……
回复 支持 反对

使用道具 举报

菜鸟飞呀飞 该用户已被删除
6
发表于 2014-7-4 17:11:02 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

7
 楼主| 发表于 2014-7-4 17:12:50 | 只看该作者
菜鸟飞呀飞 发表于 2014-7-4 17:11
a.visible = !tf

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

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

我的例子在3L

点评

万一用到呢……比如远景图啥的  发表于 2014-7-4 18:02
敢情你把Plane当Sprite使了…总之默认的Plane def visible 是返回另一个值的  发表于 2014-7-4 18:00
以后一样可以直接继承Plane_Base  发表于 2014-7-4 17:50
再有一个脚本要用plane.visible呗  发表于 2014-7-4 17:49
以后怎么会用到 = =同为实例变量。。。实在强迫症只能重写Plane  发表于 2014-7-4 17:30
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

8
 楼主| 发表于 2014-7-4 18:18:11 | 只看该作者
菜鸟飞呀飞 发表于 2014-7-4 18:16
class Plane
  alias :n_visible= :visible=
  def visible=(tf)

那不是和我的一样么

点评

暂把它看作因为bug就行…  发表于 2014-7-4 18:41
只是作为一个只返回的方法,不必纠结…它又不处理代码 代替或修改就行啦  发表于 2014-7-4 18:39
我标题就是问的“为什么”而不是“怎样解决”  发表于 2014-7-4 18:35
我只是纠结为什么默认的visible不会返回正确状态  发表于 2014-7-4 18:29
你的是子类 你不是纠结于默认层的吗。除了修改或重写 否则默认的visible不会返回你想要的可见状态  发表于 2014-7-4 18:24
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-25 15:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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