Project1

标题: 请问Window类里面的属性ox oy代表什么意思? [打印本页]

作者: lilihappies    时间: 2011-4-30 18:56
标题: 请问Window类里面的属性ox oy代表什么意思?
看了说明也不明白……什么叫视口传送元?
作者: 「旅」    时间: 2011-4-30 19:18
本帖最后由 「旅」 于 2011-4-30 19:24 编辑

嘛没必要在意他是什么意思的~~(毕竟有些名词是偏专业的东西)
关键在于他是怎么用,还有用了它会怎么样~~

就个人经验,ox和oy的数值会改变窗口内描绘的内容的位置,例如你在坐标(40,50)的地方描绘了“66RPG”这几个字符,接着ox = 50,oy= 60,那么“66RPG”就会变到坐标(-10,-10)了~~
也就是说ox和oy会"减"掉他的坐标~~

需要"加"坐标的话,就改为ox = -50,oy = -60,坐标就会变成(90,100)了~~
作者: 禾西    时间: 2011-5-1 00:43
http://rpg.blue/thread-159895-1-1.html
107樓
作者: 沙漠点灰    时间: 2011-5-1 15:10
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内容范围就是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 座标,根据该值变化进行滚动








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