Project1

标题: 哪位大大知道Gmae_Picture和Sprite_Picture之间的联系?? [打印本页]

作者: t8235184    时间: 2015-6-9 14:35
标题: 哪位大大知道Gmae_Picture和Sprite_Picture之间的联系??

大大们先看下Sprite_Picture最上面的注释:

#===============================================
# ■ Sprite_Picture
#------------------------------------------------------------------------------
#  显示图片用的精灵。根据 Game_Picture 类的实例的状态自动变化。
#===============================================

这个到底是怎么转化的啊?小的完全不能理解啊。

class Sprite_Picture < Sprite
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #     picture : Game_Picture
  #--------------------------------------------------------------------------
  def initialize(viewport, picture)
    super(viewport)
    @picture = picture
    update
  end

同样初始化函数的解释中,也出现了 picture : Game_Picture。。。

这是为什么啊?
除了注释之外,整个Sprite_Picture的代码中就找不到Game_Picture类的任何关键字啊?!

请问像注释所说的 根据 Game_Picture 类的实例的状态自动变化 这个过程是在哪里实现的呢??

难道还有隐藏类?
咳咳,我好像发现这事应该和Sprite类有关系,不过对这种转化的过程还是云里雾里~~~
好想看到所有的隐藏类啊啊啊!!


(|||゚д゚)
作者: 喵呜喵5    时间: 2015-6-9 15:03
自己看不懂写出来的代码还怪别人没写……去看Spriteset_Map里的 update_pictures 方法
作者: t8235184    时间: 2015-6-9 17:46
喵呜喵5 发表于 2015-6-9 15:03
自己看不懂写出来的代码还怪别人没写……去看Spriteset_Map里的 update_pictures 方法 ...

好的
作者: sizzflior    时间: 2015-6-10 00:46
本帖最后由 sizzflior 于 2015-6-10 00:51 编辑

我按照我的理解给你讲一下吧。
我想楼主是想知道Sprite_Picture是如何监测Game_Picture实例变化并进行更新的。
Sprite_Picture和Game_Picture之间联系的纽带你已经列出来,没错,就是
def initialize(viewport, picture)
    super(viewport)
    @picture = picture
    update
  end
你已经看到,Sprite_Picture保存了一个对Game_Picture的引用(或者说Sprite_Picture保存了Game_Picture实例),这个引用就是@picture
查看Sprite_Picture的代码你会发现,代码内部经常调用@picture.XXX,而这个@picture其实就是Game_Picture的一个实例

你可能还想知道,Sprite_Picture是怎样监测Game_Picture的变化的。换句话说,为何Game_Picture一变化,Sprite_Picture马上就能反映出来呢?
这个问题就要看Sprite_Picture的update方法,里面还是充满了@picture.XXX的调用,说白了,Sprite_Picture一直在通过@picture这个变量监测Game_Picture的值,只要Game_Picture的值发生变化,@picture也必然发生变化(别忘了@picture就是Game_Picture的实例),所以,一旦你在游戏中对Game_Picture做了什么改动(比如重新设置了图片的透明度,位置等信息),Sprite_Picture在update中通过@picture马上就能检测出这些变化,于是Sprite_Picture就能动态监测Game_Picture的变化了。
作者: t8235184    时间: 2015-6-11 16:02
sizzflior 发表于 2015-6-10 00:46
我按照我的理解给你讲一下吧。
我想楼主是想知道Sprite_Picture是如何监测Game_Picture实例变化并进行更新 ...

真的很感谢~
现在能看懂它们之间的联系了。。。
个人觉得这两个类绑在一起不是挺好的吗啊,为什么拆成两个类,难道是为了内存。。好吧,我一直觉得内存早就被无限多的update给杀完了。。。




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