Project1

标题: 请问@scene = first_scene_class.new这是什么意思? [打印本页]

作者: 九靈    时间: 2014-8-5 20:35
标题: 请问@scene = first_scene_class.new这是什么意思?
RUBY 代码复制
  1. module SceneManager
  2.   #--------------------------------------------------------------------------
  3.   # ● 模块的实例变量
  4.   #--------------------------------------------------------------------------
  5.   [url=home.php?mod=space&uid=420706]@Scene[/url] = nil                            # 当前场景实例
  6.   @stack = []                             # 场景切换的记录
  7.   @background_bitmap = nil                # 背景用的场景截图
  8.   #--------------------------------------------------------------------------
  9.   # ● 运行
  10.   #--------------------------------------------------------------------------
  11.   def self.run
  12.     DataManager.init
  13.     Audio.setup_midi if use_midi?
  14.     @scene = first_scene_class.new
  15.     @scene.main while @scene
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 获取最初场景的所属类
  19.   #--------------------------------------------------------------------------
  20.   def self.first_scene_class
  21.     unless $BTEST
  22.       DataManager.setup_new_game
  23.     end
  24.     $BTEST ? Scene_Battle : Scene_Map
  25.   end



@scene = first_scene_class.new
first_scene_class
这个不是方法吗
方法也能和类一样用来生成实例对象?
作者: taroxd    时间: 2014-8-5 20:39
本帖最后由 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
复制代码

作者: 九靈    时间: 2014-8-5 20:50
本帖最后由 九靈 于 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

   
作者: taroxd    时间: 2014-8-5 20:55
九靈 发表于 2014-8-5 20:50
def self.run
    DataManager.init
    Audio.setup_midi if use_midi?

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1