查看: 2461|回复: 6

[已经解决] 如何扩充Graphics.update方法定义

[复制链接]
梦石
0
星屑
85
在线时间
146 小时
注册时间
2011-8-14
回帖
55
发表于 2014-9-4 13:56:26 | 显示全部楼层 |阅读模式

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

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

×
module Graphics

#alias xx_update update #出错
#alias_method xx_update "self.update" #也出错

def self.update

xx_update

#my code

end

end

以上是我做的尝试,没成功,请教下,如何才能往原Graphics.update方法中扩展代码

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

梦石
0
星屑
50
在线时间
2 小时
注册时间
2014-9-1
回帖
14
发表于 2014-9-4 14:38:32 | 显示全部楼层
你要往里面塞什么
回复

使用道具 举报

梦石
0
星屑
85
在线时间
146 小时
注册时间
2011-8-14
回帖
55
 楼主| 发表于 2014-9-4 14:52:59 | 显示全部楼层
传灭虫 发表于 2014-9-4 14:38
你要往里面塞什么

需要实时更新的变量

点评

谢谢,又让我多了个思路。楼下则让我明白了module类型方法改变技巧。谢谢大家~  发表于 2014-9-4 18:09
n = Thread.new{loop{your command}} #你的实时更新  发表于 2014-9-4 15:05
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-9-4 15:57:42 | 显示全部楼层
在另一个帖子中看到的
[pre lang="Ruby"]module Graphics
  @update = method('update') if @update.nil?
  def self.update
    # 这里执行你自己的代码
    @update.call
  end
end[/pre]

点评

太感谢了!终于知道module类的方法是如何部分改写的了。  发表于 2014-9-4 18:10

评分

参与人数 1星屑 +200 收起 理由
︶ㄣ牛排ぶ + 200 认可答案

查看全部评分

回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-9-4 16:02:51 | 显示全部楼层
本帖最后由 taroxd 于 2014-9-4 16:07 编辑

模块方法也就是模块的单例方法,也就是模块单例类的方法。从这个角度考虑就可以这么做:

[pre lang="ruby" line="1"]class << Graphics
  alias old_update update
  def update
    old_update
    # ...
  end
end
[/pre]

https://rpg.blue/thread-347871-1-1.html

这里的 singleton_def_ 系列的方法也可以很方便地使用(仅限VA)

点评

太感谢了!又一种方法!  发表于 2014-9-4 18:10

评分

参与人数 1星屑 +200 收起 理由
︶ㄣ牛排ぶ + 200 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
68
在线时间
585 小时
注册时间
2013-5-25
回帖
1484
发表于 2014-9-4 17:24:35 | 显示全部楼层
其实不提倡往这个地方塞东西真的

点评

恩。主要是有些操作很多地方都要调用。想想,Graphics.update 几乎无处不在的在调用,就想着把个别小代码放里面  发表于 2014-9-4 18:11
回复

使用道具 举报

梦石
0
星屑
85
在线时间
146 小时
注册时间
2011-8-14
回帖
55
 楼主| 发表于 2014-9-4 18:13:47 | 显示全部楼层
感谢楼上各位朋友的热心帮忙!又掌握一点新技能了,哈哈~
ps:怎么修改不成 【已经解决】?

点评

前往手动仍可申请帖即可  发表于 2014-9-4 19:06
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部