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

Project1

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

[已经解决] 有关方法重载的一个悲剧

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

跳转到指定楼层
1
发表于 2010-7-22 12:01:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 DeathKing 于 2010-7-22 12:51 编辑

我最近正在慢慢研究ZTBS系统,为了稍微修改一下系统,我添加了一个叫做Fuki Help的帮助窗口,就像下面这样:



但是如果就这样的话,会导致那个小箭头没办法释放:



于是我就重载了visible=这个方法,我的想法是:当这个help_window的可见性被设置为false时,我就把这个小箭头给释放掉:

  1.   alias :dk_visible= :visible=
  2.   def visible=(value)
  3.     unless value
  4.       @fuki.bitmap = nil if @fuki.is_a? Sprite
  5.     end
  6.     dk_visible=(value)
  7.   end
复制代码
最后小箭头是释放掉了,但是窗体的却还是可见。我用反射机制看了看Window类,发现visible不是实例变量而是visible和visible=两个方法。

我上面的写法都没错啊,到底是怎么回事,需要工程么?

点评

听到的叫法太多了……有时候不知道用什么 - -  发表于 2010-7-22 19:30
其实严格来说这个应该叫方法覆盖(覆盖由父类继承的方法),Ruby 由于有 duck type 所以似乎默认没有重载功能……  发表于 2010-7-22 19:28

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

2
发表于 2010-7-22 12:21:19 | 只看该作者
……你又囧了,直接赋值为nil当然还在,dispose啊……
另外,C类(内置类全部都是)当中只能改方法,没有变量……因为变量隐藏在C类中
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
 楼主| 发表于 2010-7-22 12:22:16 | 只看该作者
回复 IamI 的帖子

@fuki是那个小箭头,我还要用的,所以不想要释放掉。
我说的是窗口。
   
回复 支持 反对

使用道具 举报

Lv2.观梦者

旅之愚者

梦石
0
星屑
255
在线时间
812 小时
注册时间
2007-7-28
帖子
2148

贵宾

4
发表于 2010-7-22 12:29:44 | 只看该作者
回复 DeathKing 的帖子

死君要改名做囧君了么~~~~~~~~

话说不太明白你的情况
不过愚以为窗体(window)用完都是dispose的。。。


   

点评

ZTBS的原帮助窗体也是最后才释放,其他场合都不可见,指向角色时可见。  发表于 2010-7-22 12:40
节约内存。。。  发表于 2010-7-22 12:37
窗体要用 - - 一直释放、创立你会不会觉得有点那啥呢?  发表于 2010-7-22 12:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

5
发表于 2010-7-22 12:32:46 | 只看该作者
不如去掉那个小箭头吧,对于玩家来说,有没有都一样吧?

点评

因为用了Fuki对话框,我想做到效果一致,而且那个小箭头也可以明确指出是那个角色。  发表于 2010-7-22 12:36
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

6
发表于 2010-7-22 12:34:00 | 只看该作者
世界喜感……去掉重载方法名内的等号,世界清静了……
  1. class Window_K < Window
  2.   alias :dk_visible visible=
  3.   def visible=(value)
  4.     unless value
  5.       p "Set"
  6.     end
  7.     dk_visible(value)
  8.   end
  9. end

  10. a = Window_K.new
  11. a.visible = false
  12. p a.visible
  13. a.visible = true
复制代码
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1150
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

7
 楼主| 发表于 2010-7-22 12:37:31 | 只看该作者
回复 IamI 的帖子
    的确可行,求原因,是alias的bug么?

   
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
8
发表于 2010-7-22 12:38:05 | 只看该作者
可以通过显式指定 self 为接受者来告诉解释器这是一个方法

点评

=b= 那我还是上传到论坛附件好了~  发表于 2010-7-22 14:15
紫苏酱内签名挂鸟~  发表于 2010-7-22 12:47
求原因,另外,头像……的确是紫色的。  发表于 2010-7-22 12:43

评分

参与人数 1星屑 +600 收起 理由
IamI + 600 其实个人习惯是300点喵

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
425
在线时间
0 小时
注册时间
2010-7-2
帖子
1
9
发表于 2010-7-22 12:38:06 | 只看该作者
嘛一般不是可以直接@sprite.visible = @help_window.visible 吗?一般我喜欢在update里插入

点评

因为这个窗体并没有一直刷新,是被动刷新,只有当我调用set_actor等方法后才刷新。(Window_Help)  发表于 2010-7-22 12:42
因为这个窗体并没有一直刷新,是被动刷新,只有当我调用set_actor等方法后才刷新。(Window_Help)  发表于 2010-7-22 12:41
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

10
发表于 2010-7-22 12:38:38 | 只看该作者
回复 DeathKing 的帖子
鬼才知道= =我们来看个更喜感的东西吧 囧
  1. class Window_K < Window
  2.   alias :dk_visible= visible=
  3.   def visible=(value)
  4.     unless value
  5.       p "Set"
  6.     end
  7.     self.dk_visible = value
  8.   end
  9. end

  10. a = Window_K.new
  11. a.visible = false
  12. p a.visible
  13. a.visible = true
复制代码

点评

完美解决  发表于 2010-7-22 12:46
和 alias dk_visible visible= 效果一样  发表于 2010-7-22 12:45
求运行结果 =y=  发表于 2010-7-22 12:44
表示没有工程看不到喜感,心里很痒  发表于 2010-7-22 12:39

评分

参与人数 1星屑 +200 收起 理由
DeathKing + 200 请帮忙认可紫苏,XP是100点吧? ...

查看全部评分

菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 20:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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