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

Project1

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

[已经解决] 哪位大大知道Gmae_Picture和Sprite_Picture之间的联系??

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
跳转到指定楼层
1
发表于 2015-6-9 14:35:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

大大们先看下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类有关系,不过对这种转化的过程还是云里雾里~~~
好想看到所有的隐藏类啊啊啊!!


(|||゚д゚)

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21584
在线时间
9407 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

2
发表于 2015-6-9 15:03:37 | 只看该作者
自己看不懂写出来的代码还怪别人没写……去看Spriteset_Map里的 update_pictures 方法

评分

参与人数 1星屑 +132 收起 理由
VIPArcher + 132 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
3
 楼主| 发表于 2015-6-9 17:46:15 | 只看该作者
喵呜喵5 发表于 2015-6-9 15:03
自己看不懂写出来的代码还怪别人没写……去看Spriteset_Map里的 update_pictures 方法 ...

好的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1575
在线时间
16 小时
注册时间
2014-10-28
帖子
2
4
发表于 2015-6-10 00:46:51 | 只看该作者
本帖最后由 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的变化了。

评分

参与人数 1星屑 +20 收起 理由
泉塚四季 + 20 描述的挺详细

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
34 小时
注册时间
2011-3-10
帖子
17
5
 楼主| 发表于 2015-6-11 16:02:09 | 只看该作者
sizzflior 发表于 2015-6-10 00:46
我按照我的理解给你讲一下吧。
我想楼主是想知道Sprite_Picture是如何监测Game_Picture实例变化并进行更新 ...

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 05:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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