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

Project1

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

[已经解决] 基础脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2013-4-13
帖子
92
跳转到指定楼层
1
发表于 2013-4-16 16:44:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 爆发的妞 于 2013-4-27 17:10 编辑

在 Game_Battler_1 脚本里面
有例如这样的方法

  #--------------------------------------------------------------------------
  # ● 获取速度
  #--------------------------------------------------------------------------
  def agi
    n = [[base_agi + @agi_plus, 1].max, 999].min
    for i in @states
      n *= $data_states.agi_rate / 100.0
    end
    n = [[Integer(n), 1].max, 999].min
    return n
  end

这里面的base_agi应该是方法吧。 但是我怎么找不到这个方法呢?

Lv2.观梦者 (暗夜天使)

万兽

梦石
0
星屑
597
在线时间
2271 小时
注册时间
2006-11-4
帖子
4868

贵宾

2
发表于 2013-4-16 17:20:38 | 只看该作者
请用全局搜索ctrl+shift+f
这个方法在Game_Actor和Game_Enemy内分别都有定义过。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2013-4-13
帖子
92
3
 楼主| 发表于 2013-4-16 18:46:30 | 只看该作者
弗雷德 发表于 2013-4-16 17:20
请用全局搜索ctrl+shift+f
这个方法在Game_Actor和Game_Enemy内分别都有定义过。

谢谢你的回答, 是有这个方法,我找到了。

但是有个疑问啊:
Game_Actor 是继承于Game_Battler的。
为什么Game_Battler没有这个方法啊。 不是应该在父类
有个抽象方法或方法,让子类去重写吗?难道这是Ruby的特性?
新手求解答。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

4
发表于 2013-4-16 22:21:34 | 只看该作者
本帖最后由 亿万星辰 于 2013-4-16 22:23 编辑

你有见过Game_Battler的对象么?
或者说,你有见过Game_Battler.new么?
我们见到的都是Game_Actor和Game_Enemy的对象,而只有这些对象们会调用.agi等等的方法,所以~
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
5
发表于 2013-4-17 06:33:11 手机端发表。 | 只看该作者
本帖最后由 SuperMario 于 2013-4-17 06:38 编辑

子类直接继承父类的方法,还可以用 super 对其修改,或重新定义。不过父类去直接调用子类的方法是不好的写法。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2013-4-13
帖子
92
6
 楼主| 发表于 2013-4-17 10:15:14 | 只看该作者
SuperMario 发表于 2013-4-17 06:33
子类直接继承父类的方法,还可以用 super 对其修改,或重新定义。不过父类去直接调用子类的方法是不好的写 ...

恩 。 我就是对于父类没有这个方法,但是父类可以调用子类的这个方法,感到很困惑,

java,C#等没有这种写法的。 如果ruby支持这样搞,当然我就只有接受了。哈哈。

还有父类调用子类,我可能有不同的意见, 这样也是有好处的, 模板方法模式基本上都是

这种写法。定义一个算法或流程 ,让子类去实现。谢谢大家的回答。  我在好好看看学习下。  
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2013-4-13
帖子
92
7
 楼主| 发表于 2013-4-17 10:24:47 | 只看该作者
亿万星辰 发表于 2013-4-16 22:21
你有见过Game_Battler的对象么?
或者说,你有见过Game_Battler.new么?
我们见到的都是Game_Actor和Game_E ...

恩。谢谢你的回答。 你说的是对的。 Game_Battler没有实例化的,

是为了他的子类服务的。 可能误解我的意思了。  我说的是Game_Battler

没有某个方法, 但是Game_Actor有这个方法, 应该不算重写父类的方法吧。

但是他这样做了。 所以有点疑惑。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
8
发表于 2013-4-17 17:10:43 | 只看该作者
爆发的妞 发表于 2013-4-17 10:15
恩 。 我就是对于父类没有这个方法,但是父类可以调用子类的这个方法,感到很困惑,

java,C#等没有这种 ...

似乎我没有说清楚- -b
父类是不能调用子类方法的;但是子类能直接调用父类的。
游戏中并没有使用到 Game_Battler 类实例,所以这样写并不会导致出错。我只是觉得这样写不好而已,因为一个类有一个它自身无法使用的方法。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
142 小时
注册时间
2013-4-13
帖子
92
9
 楼主| 发表于 2013-4-17 17:20:55 | 只看该作者
SuperMario 发表于 2013-4-17 17:10
似乎我没有说清楚- -b
父类是不能调用子类方法的;但是子类能直接调用父类的。
游戏中并没有使用到 Game_ ...

恩。好的。 谢谢。我明白了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 12:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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