| 
 
| 赞 | 1 |  
| VIP | 246 |  
| 好人卡 | 87 |  
| 积分 | 1 |  
| 经验 | 34142 |  
| 最后登录 | 2015-1-15 |  
| 在线时间 | 323 小时 |  
 Lv1.梦旅人 
	梦石0 星屑55 在线时间323 小时注册时间2010-8-21帖子666 | 
| ox = original x即原始(原点)x坐标,和x坐标是2个不同的概念,这个同精灵的ox基本一致, 不过精灵的ox,oy一般用到旋转的时候才会改变其数值,
 而Window的ox,oy是Window的内容(c开头的那个啥?英语不及格的飘过..)的ox,
 简单的可以理解为内容的x坐标的相反数,超过Window内容范围的地方将被和谐掉,
 
 而RM最强大
 的"视口"(Viewport..?没拼错吧...)相当于一张桌面,超过桌面范围的内容将被和谐掉,
 新建一个窗口要指定一个视口,不过默认是全屏(0,0,640,480),修改视口的功能被
 Window_Base初始化直接 super() 了
 而Window内容(c打头的那个)的视口却不是这个视口(好纠结...),
 F1中说的是:
 Window内部由大量精灵构成,所以可以认为"显示内容"的也是一个精灵,生成一个
 精灵也要指定一个视口(更纠结...),所以,Window内容(c打头的那个)的视口,就是
 ,Window内容范围就是Window的
 Rect.new(self.x+16,self.y+16,self.width-32,self.height-32)
 [这就是为什么F1中说: 光标的矩形(Rect)。以(-16,-16)的相对座标指定窗口的左上角。]
 设Window显示"内容的"精灵为:   @_c字打头
 Window类中可能有这样的定义:
 
 @_c字打头 = Sprite.new(Viewport.new(Rect.new(self.x+16,self.y+16,self.width-32,self.height-32)))
 @_c字打头.bitmap = self.contect (记起来了...?)
 @_c字打头.x = self.x + 16
 @_c字打头.y = self.y + 16
 而Window的ox则可能这么定义
 def ox=(ox)
 @_c字打头.ox = ox
 end
 def ox
 @_c字打头.ox
 end
 当然,有问题:当被释放的时候,要抛出(为什么是"抛"...)RGSSError
 raise RGSSError, "disposed window"
 即:
 def ox=(ox)
 if self.disposed?
 raise RGSSError, "disposed window"
 else
 @_c字打头.ox = ox
 end
 end
 def ox
 if self.disposed?
 raise RGSSError, "disposed window"
 else
 @_c字打头.ox
 end
 end
 
 当然不用了解....
 不知不觉打了这么多字了...费了这么多话,反正:
 
 Window的ox就是内容的ox坐标,F1说明了的:
 窗口内容传送元原点的 X 座标,根据该值变化进行滚动
 
 
 
 | 
 评分
查看全部评分
 |