赞 | 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 座标,根据该值变化进行滚动
|
评分
-
查看全部评分
|