查看: 3133|回复: 3

[已经解决] 请问@scene = first_scene_class.new这是什么意思?

[复制链接]
梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
发表于 2014-8-5 20:35:44 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]module SceneManager
  #--------------------------------------------------------------------------
  # ● 模块的实例变量
  #--------------------------------------------------------------------------
  @Scene = nil                            # 当前场景实例
  @stack = []                             # 场景切换的记录
  @background_bitmap = nil                # 背景用的场景截图
  #--------------------------------------------------------------------------
  # ● 运行
  #--------------------------------------------------------------------------
  def self.run
    DataManager.init
    Audio.setup_midi if use_midi?
    @scene = first_scene_class.new
    @scene.main while @scene
  end
  #--------------------------------------------------------------------------
  # ● 获取最初场景的所属类
  #--------------------------------------------------------------------------
  def self.first_scene_class
    unless $BTEST
      DataManager.setup_new_game
    end
    $BTEST ? Scene_Battle : Scene_Map
  end
[/pre]


@scene = first_scene_class.new
first_scene_class
这个不是方法吗
方法也能和类一样用来生成实例对象?

…あたしは天

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

开拓者贵宾

发表于 2014-8-5 20:39:14 | 显示全部楼层
本帖最后由 taroxd 于 2014-8-5 20:49 编辑

这个方法的返回值是一个类呢~
@Scene

举个栗子
  1. a = Object
  2. a.new # => Object.new
复制代码
那么 first_scene_class 返回一个类,我们也可以对这个类 .new ~、

写的长一点的话
  1. klass = self.first_scene_class # class 是关键字不能乱用
  2. @Scene = klass.new
复制代码

评分

参与人数 1星屑 +150 收起 理由
VIPArcher + 150 栗子~。~

查看全部评分

回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
 楼主| 发表于 2014-8-5 20:50:22 | 显示全部楼层
本帖最后由 九靈 于 2014-8-5 20:52 编辑
taroxd 发表于 2014-8-5 20:39
这个方法的返回值是一个类呢~

举个栗子那么 first_scene_class 返回一个类,我们也可以对这个类 .new ~、


def self.run
    DataManager.init
    Audio.setup_midi if use_midi?
    @Scene = (这里self. 是省掉了吗?)first_scene_class(所以程式运行到这里后就变成了Scene_Map or Scene_Battle).new(然后再生成实例的吗)
    @scene.main while @scene
  end
  #--------------------------------------------------------------------------
  # ● 获取最初场景的所属类
  #--------------------------------------------------------------------------
  def self.first_scene_class
    unless $BTEST
      DataManager.setup_new_game
    end
    $BTEST ? Scene_Battle : Scene_Map
  end

   
回复

使用道具 举报

…あたしは天

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

开拓者贵宾

发表于 2014-8-5 20:55:30 | 显示全部楼层
九靈 发表于 2014-8-5 20:50
def self.run
    DataManager.init
    Audio.setup_midi if use_midi?

很对,self省掉了,你的绿字说的都是对的。
还有什么问题吗?

点评

没了!谢谢  发表于 2014-8-5 20:57
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部