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

Project1

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

[已经解决] 在一个Window类xy坐标的确定

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
317 小时
注册时间
2009-1-18
帖子
177
跳转到指定楼层
1
发表于 2012-4-19 00:49:59 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 Majirefy 于 2012-4-19 15:12 编辑

自己心血来潮写了修改脚本的时候,发现以前一直没有注意的一个问题……终于想起来提问了。
在一个Window中,如何确定内部新定义的Rect的坐标。

Rect.new(x, y, width, height) →这个Rect的new方法,可是x和y分别应该填入什么呢?
具体说一下,上图:


咳咳咳,可以依稀看到那个“小镇”文字的右上角有一个白色的Rect,预期的效果是这个白条在文字下面,类似下划线,然后采用过度效果,类似Window_MapName中定义两个Rect的渐变,镜面对称,变成看起来一个两边都渐变的直线……(好吧,也许我说得没有让人听懂……)
自己改造了一下Window_MapName代码:
  1. #==============================================================================
  2. # ** Window_MapName
  3. #------------------------------------------------------------------------------
  4. #  This window displays the map name.
  5. #==============================================================================

  6. class Window_MapName < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # * Settings
  9.   #--------------------------------------------------------------------------
  10.   FONT_NAME   = ["MingLiU", "FangSong"]   # Font Name
  11.   FONT_SIZE   = 36                        # Font Size
  12.   FONT_BOLD   = true                      # Font Bold
  13.   PADDING     = 12                        # Padding between the window's frame and contents
  14.   LINE_HEIGHT = 4                         # Height of Line
  15.   #--------------------------------------------------------------------------
  16.   # * Object Initialization
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     super(((Graphics.width - window_width) / 2),
  20.       ((Graphics.height - (FONT_SIZE + PADDING * 2)) / 2), window_width, FONT_SIZE + PADDING * 2)
  21.     contents.font.name = FONT_NAME
  22.     contents.font.size = FONT_SIZE
  23.     contents.font.bold = FONT_BOLD
  24.     self.opacity = 0
  25.     self.contents_opacity = 0
  26.     @show_count = 0
  27.     refresh
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # * Get Window Width
  31.   #--------------------------------------------------------------------------
  32.   def window_width
  33.     return Graphics.width
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # * Frame Update
  37.   #--------------------------------------------------------------------------
  38.   def update
  39.     super
  40.     if @show_count > 0 && $game_map.name_display
  41.       update_fadein
  42.       @show_count -= 1
  43.     else
  44.       update_fadeout
  45.     end
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # * Update Fadein
  49.   #--------------------------------------------------------------------------
  50.   def update_fadein
  51.     self.contents_opacity += 16
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # * Update Fadeout
  55.   #--------------------------------------------------------------------------
  56.   def update_fadeout
  57.     self.contents_opacity -= 16
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # * Open Window
  61.   #--------------------------------------------------------------------------
  62.   def open
  63.     refresh
  64.     @show_count = 150
  65.     self.contents_opacity = 0
  66.     self
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # * Close Window
  70.   #--------------------------------------------------------------------------
  71.   def close
  72.     @show_count = 0
  73.     self
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # * Refresh
  77.   #--------------------------------------------------------------------------
  78.   def refresh
  79.     contents.clear
  80.     unless $game_map.display_name.empty?
  81.       draw_background(contents.rect)
  82.       draw_text(contents.rect, $game_map.display_name, 1)
  83.     end
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # * Draw Background
  87.   #--------------------------------------------------------------------------
  88. #~   def draw_background(rect)
  89. #~     temp_rect = rect.clone
  90. #~     temp_rect.width /= 2
  91. #~     temp_rect.y = FONT_SIZE - PADDING
  92. #~     temp_rect.height = LINE_HEIGHT
  93. #~     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  94. #~     temp_rect.x = temp_rect.width
  95. #~     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  96. #~   end
  97.   def draw_background(rect)
  98.     temp_rect = Rect.new(0, 0, self.width, LINE_HEIGHT)
  99.     p temp_rect.x
  100.     p temp_rect.y
  101.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  102.     temp_rect.x = temp_rect.width
  103.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # * Get Background Color 1
  107.   #--------------------------------------------------------------------------
  108.   def back_color1
  109.     Color.new(255, 255, 255, 220)
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # * Get Background Color 2
  113.   #--------------------------------------------------------------------------
  114.   def back_color2
  115.     Color.new(255, 255, 255, 0)
  116.   end
  117. end
复制代码
从第86行到105行是用来画那个渐变直线的。
100行和101行用了两个p函数显示一下我新建的那个temp_rect当前坐标,肯定是(0, 0):

可是现实出来这么感觉肯定不是(0, 0)呢……
所以这个坐标系的原点到底是基于哪个的呢……?


叽里呱啦这么多,还多些耐心看下去……

ToAsk3.png (288.4 KB, 下载次数: 67)

ToAsk3.png

Lv1.梦旅人

梦石
0
星屑
325
在线时间
8 小时
注册时间
2011-10-4
帖子
3
8
发表于 2012-4-20 21:42:38 | 只看该作者
表示路过……
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
112 小时
注册时间
2011-10-6
帖子
182
7
发表于 2012-4-19 18:15:43 | 只看该作者
Majirefy 发表于 2012-4-19 16:56
能帮忙提示一点……修改了opacity这个窗口就会一直在屏幕上……
这个之间关系或者是怎么调用的呢……(搜 ...

RPG Maker VX Ace 的帮助文件里面搜索 Window 吧。
不过那里好像是日文版暂时还没有翻译。
那么可以找个 RPG Maker VX 的看看,几乎是一样的。
如果没有的话,论坛里面有。页面上导航栏有个隙间,下拉菜单里面有。

点评

帮了这么多忙……虽然没有给你经验……但是,鞠躬~~~  发表于 2012-4-19 23:21
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
317 小时
注册时间
2009-1-18
帖子
177
6
 楼主| 发表于 2012-4-19 16:56:58 | 只看该作者
orzfly 发表于 2012-4-19 11:22
原点在那个窗口的左上角处。你可以把self.opacity = 0改成255就可以看到窗口边框了。 ...

能帮忙提示一点……修改了opacity这个窗口就会一直在屏幕上……
这个之间关系或者是怎么调用的呢……(搜索教程的话,怎么搜索呢……)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
112 小时
注册时间
2011-10-6
帖子
182
5
发表于 2012-4-19 13:47:40 | 只看该作者
Majirefy 发表于 2012-4-19 11:41
我不知道为什么……这么编辑这个帖子都是这样子……

把代码框的pre lang="ruby" line="1"换成code,/pre换成/code

点评

Nice work!多谢多谢!再次鞠躬!  发表于 2012-4-19 15:12
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
317 小时
注册时间
2009-1-18
帖子
177
4
 楼主| 发表于 2012-4-19 11:41:04 | 只看该作者
我不知道为什么……这么编辑这个帖子都是这样子……


‘‘──Majirefy于2012-4-19 11:41补充以下内容

我怎么编辑这个帖子都是这个样子………………
明明写了很多的说……
’’
回复

使用道具 举报

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

3
发表于 2012-4-19 11:22:06 手机端发表。 | 只看该作者
原点在那个窗口的左上角处。你可以把self.opacity = 0改成255就可以看到窗口边框了。
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

2
发表于 2012-4-19 06:27:41 | 只看该作者
我想知道你到底在问什么= =……

点评

写帖子的时候有点问题……大概代码格式不对吧……  发表于 2012-4-19 15:24
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 13:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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