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

Project1

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

[已经解决] Game_Actors

[复制链接]

Lv1.梦旅人

梦石
0
星屑
180
在线时间
810 小时
注册时间
2013-8-23
帖子
804

开拓者

跳转到指定楼层
1
发表于 2014-2-9 21:09:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
在Game_Actors类中
RUBY 代码复制
  1. def initialize
  2.     @data = []
  3.   end
  4.   def [](actor_id)
  5.     if actor_id > 999 or $data_actors[actor_id] == nil
  6.       return nil
  7.     end
  8.     if @data[actor_id] == nil
  9.       @data[actor_id] = Game_Actor.new(actor_id)
  10.     end
  11.     return @data[actor_id]
  12.   end

这两段是干什么的?
[]是什么意思?

点评

后面的@data[actor_id]中,用的"[]"不是正在进行重载的算符,而是调用已经定义好的数组类的[]算符。  发表于 2014-2-11 13:00
楼主要注意下这个问题:def [](actor_id)是方法的重载,意思就是说用同一个符号来表示不同的方法,进行不同的操作。这里是对单目算符[]进行重载。  发表于 2014-2-11 12:58
@data[actor_id]是把[](actor_id)括号里的参数传递进来了【这就叫参数传递  发表于 2014-2-9 22:15
@data = []就是@data赋值一个空数组的意思= =这里的[]不是方法  发表于 2014-2-9 22:13

评分

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

查看全部评分

遗失的签名。。。

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

2
发表于 2014-2-9 21:54:47 | 只看该作者
正如你看到的def后面的[]是一个方法
参考绿色注释部分,这个方法的使用方式是
  1. $game_actors[id]
复制代码
取出id所指定的角色($game_actor)对象
def initialize是一个默认的初始化方法,它可以接受self.new传递给它的参数【这个即使只是理论但是也是公认的规定
def []用于取出角色对象 上面已经说过了 if actor_id > 999 or $data_actors[actor_id] == nil #如果id超过上限999或这个id中没有角色就返回nil return nil

点评

谢谢  发表于 2014-2-9 22:18
@data=[]这理的[]是什么意思? @data[actor_id]又是什么意思?(实变量后加[]方法?现在[]方法还没定义完啊)  发表于 2014-2-9 22:04

评分

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

查看全部评分


  -fk: -azogi:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 01:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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