Project1
标题: 在一个Window类xy坐标的确定 [打印本页]
作者: Majirefy 时间: 2012-4-19 00:49
标题: 在一个Window类xy坐标的确定
本帖最后由 Majirefy 于 2012-4-19 15:12 编辑
自己心血来潮写了修改脚本的时候,发现以前一直没有注意的一个问题……终于想起来提问了。
在一个Window中,如何确定内部新定义的Rect的坐标。
Rect.new(x, y, width, height) →这个Rect的new方法,可是x和y分别应该填入什么呢?
具体说一下,上图:
咳咳咳,可以依稀看到那个“小镇”文字的右上角有一个白色的Rect,预期的效果是这个白条在文字下面,类似下划线,然后采用过度效果,类似Window_MapName中定义两个Rect的渐变,镜面对称,变成看起来一个两边都渐变的直线……(好吧,也许我说得没有让人听懂……)
自己改造了一下Window_MapName代码:- #==============================================================================
- # ** Window_MapName
- #------------------------------------------------------------------------------
- # This window displays the map name.
- #==============================================================================
- class Window_MapName < Window_Base
- #--------------------------------------------------------------------------
- # * Settings
- #--------------------------------------------------------------------------
- FONT_NAME = ["MingLiU", "FangSong"] # Font Name
- FONT_SIZE = 36 # Font Size
- FONT_BOLD = true # Font Bold
- PADDING = 12 # Padding between the window's frame and contents
- LINE_HEIGHT = 4 # Height of Line
- #--------------------------------------------------------------------------
- # * Object Initialization
- #--------------------------------------------------------------------------
- def initialize
- super(((Graphics.width - window_width) / 2),
- ((Graphics.height - (FONT_SIZE + PADDING * 2)) / 2), window_width, FONT_SIZE + PADDING * 2)
- contents.font.name = FONT_NAME
- contents.font.size = FONT_SIZE
- contents.font.bold = FONT_BOLD
- self.opacity = 0
- self.contents_opacity = 0
- @show_count = 0
- refresh
- end
- #--------------------------------------------------------------------------
- # * Get Window Width
- #--------------------------------------------------------------------------
- def window_width
- return Graphics.width
- end
- #--------------------------------------------------------------------------
- # * Frame Update
- #--------------------------------------------------------------------------
- def update
- super
- if @show_count > 0 && $game_map.name_display
- update_fadein
- @show_count -= 1
- else
- update_fadeout
- end
- end
- #--------------------------------------------------------------------------
- # * Update Fadein
- #--------------------------------------------------------------------------
- def update_fadein
- self.contents_opacity += 16
- end
- #--------------------------------------------------------------------------
- # * Update Fadeout
- #--------------------------------------------------------------------------
- def update_fadeout
- self.contents_opacity -= 16
- end
- #--------------------------------------------------------------------------
- # * Open Window
- #--------------------------------------------------------------------------
- def open
- refresh
- @show_count = 150
- self.contents_opacity = 0
- self
- end
- #--------------------------------------------------------------------------
- # * Close Window
- #--------------------------------------------------------------------------
- def close
- @show_count = 0
- self
- end
- #--------------------------------------------------------------------------
- # * Refresh
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
- unless $game_map.display_name.empty?
- draw_background(contents.rect)
- draw_text(contents.rect, $game_map.display_name, 1)
- end
- end
- #--------------------------------------------------------------------------
- # * Draw Background
- #--------------------------------------------------------------------------
- #~ def draw_background(rect)
- #~ temp_rect = rect.clone
- #~ temp_rect.width /= 2
- #~ temp_rect.y = FONT_SIZE - PADDING
- #~ temp_rect.height = LINE_HEIGHT
- #~ contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
- #~ temp_rect.x = temp_rect.width
- #~ contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
- #~ end
- def draw_background(rect)
- temp_rect = Rect.new(0, 0, self.width, LINE_HEIGHT)
- p temp_rect.x
- p temp_rect.y
- contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
- temp_rect.x = temp_rect.width
- contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
- end
- #--------------------------------------------------------------------------
- # * Get Background Color 1
- #--------------------------------------------------------------------------
- def back_color1
- Color.new(255, 255, 255, 220)
- end
- #--------------------------------------------------------------------------
- # * Get Background Color 2
- #--------------------------------------------------------------------------
- def back_color2
- Color.new(255, 255, 255, 0)
- end
- end
复制代码 从第86行到105行是用来画那个渐变直线的。
100行和101行用了两个p函数显示一下我新建的那个temp_rect当前坐标,肯定是(0, 0):
可是现实出来这么感觉肯定不是(0, 0)呢……
所以这个坐标系的原点到底是基于哪个的呢……?
叽里呱啦这么多,还多些耐心看下去……