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

Project1

 找回密码
 注册会员
搜索

请问窗口的坐标位置可以改吗,我改完为何没反应

查看数: 1807 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-3-1 22:07

正文摘要:

如图,这个对话框的Y轴坐标我想提高点,让对话框的底边和屏幕底边有点距离,可是我不知道改哪里,请问这个怎么改啊

回复

R9560 发表于 2015-3-3 11:33:06
泉塚四季 发表于 2015-3-3 03:55
既然你知道该y坐标可以修改窗口位置,没注意到 update_placement 下面那么明显的写着一个self.y ? ...

太谢谢,我搜索你那个英文,然后发现203行,在后面加了个-15之后窗口位置变化了
泉塚四季 发表于 2015-3-3 03:55:12
既然你知道该y坐标可以修改窗口位置,没注意到 update_placement 下面那么明显的写着一个self.y ?

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

R9560 发表于 2015-3-3 02:12:24
喵呜喵5 发表于 2015-3-2 18:07



我又重新建了一个工程。。。复制了里面window message到自己的工程里了。。。
请问喵呜喵5桑这个对话框到底能不能通过改脚本改他的窗口位置啊,我改菜单都能找到坐标改位置,唯独
这个对话框改了y坐标也没用。。请问如果这个对话框如果能改位置的话,具体改window message里的哪行
才能变动位置呢。。

  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章信息的窗口。
  5. #==============================================================================

  6. class Window_Message < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, window_width, window_height)
  12.     self.z = 200
  13.     self.openness = 0
  14.     create_all_windows
  15.     create_back_bitmap
  16.     create_back_sprite
  17.     clear_instance_variables
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 取得窗口的宽度
  21.   #--------------------------------------------------------------------------
  22.   def window_width
  23.     Graphics.width
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 取得窗口的高度
  27.   #--------------------------------------------------------------------------
  28.   def window_height
  29.     fitting_height(visible_line_number)
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 清除实例变量
  33.   #--------------------------------------------------------------------------
  34.   def clear_instance_variables
  35.     @fiber = nil                # 纤程
  36.     @background = 0             # 背景类型
  37.     @position = 2               # 显示位置
  38.     clear_flags
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 清除的标帜
  42.   #--------------------------------------------------------------------------
  43.   def clear_flags
  44.     @show_fast = false          # 快进的标帜
  45.     @line_show_fast = false     # 行单位快进的标帜
  46.     @pause_skip = false         # [不进行输入等待]的标帜
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 取得显示行数
  50.   #--------------------------------------------------------------------------
  51.   def visible_line_number
  52.     return 4
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 释放
  56.   #--------------------------------------------------------------------------
  57.   def dispose
  58.     super
  59.     dispose_all_windows
  60.     dispose_back_bitmap
  61.     dispose_back_sprite
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 帧更新
  65.   #--------------------------------------------------------------------------
  66.   def update
  67.     super
  68.     update_all_windows
  69.     update_back_sprite
  70.     update_fiber
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 纤程的更新
  74.   #--------------------------------------------------------------------------
  75.   def update_fiber
  76.     if @fiber
  77.       @fiber.resume
  78.     elsif $game_message.busy? && !$game_message.scroll_mode
  79.       @fiber = Fiber.new { fiber_main }
  80.       @fiber.resume
  81.     else
  82.       $game_message.visible = false
  83.     end
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 生成所有窗口
  87.   #--------------------------------------------------------------------------
  88.   def create_all_windows
  89.     @gold_window = Window_Gold.new
  90.     @gold_window.x = Graphics.width - @gold_window.width
  91.     @gold_window.y = 0
  92.     @gold_window.openness = 0
  93.     @choice_window = Window_ChoiceList.new(self)
  94.     @number_window = Window_NumberInput.new(self)
  95.     @item_window = Window_KeyItem.new(self)
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 生成背景位图
  99.   #--------------------------------------------------------------------------
  100.   def create_back_bitmap
  101.     @back_bitmap = Bitmap.new(width, height)
  102.     rect1 = Rect.new(0, 0, width, 12)
  103.     rect2 = Rect.new(0, 12, width, height - 24)
  104.     rect3 = Rect.new(0, height - 12, width, 12)
  105.     @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
  106.     @back_bitmap.fill_rect(rect2, back_color1)
  107.     @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 取得背景色 1
  111.   #--------------------------------------------------------------------------
  112.   def back_color1
  113.     Color.new(0, 0, 0, 160)
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 取得背景色 2
  117.   #--------------------------------------------------------------------------
  118.   def back_color2
  119.     Color.new(0, 0, 0, 0)
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 生成背景活动块
  123.   #--------------------------------------------------------------------------
  124.   def create_back_sprite
  125.     @back_sprite = Sprite.new
  126.     @back_sprite.bitmap = @back_bitmap
  127.     @back_sprite.visible = false
  128.     @back_sprite.z = z - 1
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 释放所有窗口
  132.   #--------------------------------------------------------------------------
  133.   def dispose_all_windows
  134.     @gold_window.dispose
  135.     @choice_window.dispose
  136.     @number_window.dispose
  137.     @item_window.dispose
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 释放背景位图
  141.   #--------------------------------------------------------------------------
  142.   def dispose_back_bitmap
  143.     @back_bitmap.dispose
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 释放背景活动块
  147.   #--------------------------------------------------------------------------
  148.   def dispose_back_sprite
  149.     @back_sprite.dispose
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 更新所有窗口
  153.   #--------------------------------------------------------------------------
  154.   def update_all_windows
  155.     @gold_window.update
  156.     @choice_window.update
  157.     @number_window.update
  158.     @item_window.update
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 更新背景活动块
  162.   #--------------------------------------------------------------------------
  163.   def update_back_sprite
  164.     @back_sprite.visible = (@background == 1)
  165.     @back_sprite.y = y
  166.     @back_sprite.opacity = openness
  167.     @back_sprite.update
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 处理纤程的主逻辑
  171.   #--------------------------------------------------------------------------
  172.   def fiber_main
  173.     $game_message.visible = true
  174.     update_background
  175.     update_placement
  176.     loop do
  177.       process_all_text if $game_message.has_text?
  178.       process_input
  179.       $game_message.clear
  180.       @gold_window.close
  181.       Fiber.yield
  182.       break unless text_continue?
  183.     end
  184.     close_and_wait
  185.     $game_message.visible = false
  186.     @fiber = nil
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 更新窗口背景
  190.   #--------------------------------------------------------------------------
  191.   def update_background
  192.     @background = $game_message.background
  193.     self.opacity = @background == 0 ? 255 : 0
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 更新窗口的位置
  197.   #--------------------------------------------------------------------------
  198.   def update_placement
  199.     @position = $game_message.position
  200.     self.y = @position * (Graphics.height - height) / 2
  201.     @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● 处理所有内容
  205.   #--------------------------------------------------------------------------
  206.   def process_all_text
  207.     open_and_wait
  208.     text = convert_escape_characters($game_message.all_text)
  209.     pos = {}
  210.     new_page(text, pos)
  211.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 输入处理
  215.   #--------------------------------------------------------------------------
  216.   def process_input
  217.     if $game_message.choice?
  218.       input_choice
  219.     elsif $game_message.num_input?
  220.       input_number
  221.     elsif $game_message.item_choice?
  222.       input_item
  223.     else
  224.       input_pause unless @pause_skip
  225.     end
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● 打开窗口并等待窗口开启完成
  229.   #--------------------------------------------------------------------------
  230.   def open_and_wait
  231.     open
  232.     Fiber.yield until open?
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 关闭窗口并等待窗口关闭完成
  236.   #--------------------------------------------------------------------------
  237.   def close_and_wait
  238.     close
  239.     Fiber.yield until all_close?
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 判定是否所有窗口已全部关闭
  243.   #--------------------------------------------------------------------------
  244.   def all_close?
  245.     close? && @choice_window.close? &&
  246.     @number_window.close? && @item_window.close?
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 判定文章是否继续显示
  250.   #--------------------------------------------------------------------------
  251.   def text_continue?
  252.     $game_message.has_text? && !settings_changed?
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 判定背景和位置是否被变更
  256.   #--------------------------------------------------------------------------
  257.   def settings_changed?
  258.     @background != $game_message.background ||
  259.     @position != $game_message.position
  260.   end
  261.   #--------------------------------------------------------------------------
  262.   # ● 等待
  263.   #--------------------------------------------------------------------------
  264.   def wait(duration)
  265.     duration.times { Fiber.yield }
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 监听[确定]键的按下,更新快进的标帜
  269.   #--------------------------------------------------------------------------
  270.   def update_show_fast
  271.     @show_fast = true if Input.trigger?(:C)
  272.   end
  273.   #--------------------------------------------------------------------------
  274.   # ● 输出一个字符后的等待
  275.   #--------------------------------------------------------------------------
  276.   def wait_for_one_character
  277.     update_show_fast
  278.     Fiber.yield unless @show_fast || @line_show_fast
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ● 翻页处理
  282.   #--------------------------------------------------------------------------
  283.   def new_page(text, pos)
  284.     contents.clear
  285.     draw_face($game_message.face_name, $game_message.face_index, 0, 0)
  286.     reset_font_settings
  287.     pos[:x] = new_line_x
  288.     pos[:y] = 0
  289.     pos[:new_x] = new_line_x
  290.     pos[:height] = calc_line_height(text)
  291.     clear_flags
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● 取得换行位置
  295.   #--------------------------------------------------------------------------
  296.   def new_line_x
  297.     $game_message.face_name.empty? ? 0 : 112
  298.   end
  299.   #--------------------------------------------------------------------------
  300.   # ● 普通文字的处理
  301.   #--------------------------------------------------------------------------
  302.   def process_normal_character(c, pos)
  303.     super
  304.     wait_for_one_character
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 换行文字的处理
  308.   #--------------------------------------------------------------------------
  309.   def process_new_line(text, pos)
  310.     @line_show_fast = false
  311.     super
  312.     if need_new_page?(text, pos)
  313.       input_pause
  314.       new_page(text, pos)
  315.     end
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● 判定是否需要翻页
  319.   #--------------------------------------------------------------------------
  320.   def need_new_page?(text, pos)
  321.     pos[:y] + pos[:height] > contents.height && !text.empty?
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 翻页文字的处理
  325.   #--------------------------------------------------------------------------
  326.   def process_new_page(text, pos)
  327.     text.slice!(/^\n/)
  328.     input_pause
  329.     new_page(text, pos)
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 处理控制符指定的图标描画
  333.   #--------------------------------------------------------------------------
  334.   def process_draw_icon(icon_index, pos)
  335.     super
  336.     wait_for_one_character
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● 控制符的处理
  340.   #     code : 控制符的实际形式(比如「\C[1]」是「C」)
  341.   #     text : 描画处理中的字符串缓存(字符串可能会被修改)
  342.   #     pos  : 描画位置 {:x, :y, :new_x, :height}
  343.   #--------------------------------------------------------------------------
  344.   def process_escape_character(code, text, pos)
  345.     case code.upcase
  346.     when '
  347.       @gold_window.open
  348.     when '.'
  349.       wait(15)
  350.     when '|'
  351.       wait(60)
  352.     when '!'
  353.       input_pause
  354.     when '>'
  355.       @line_show_fast = true
  356.     when '<'
  357.       @line_show_fast = false
  358.     when '^'
  359.       @pause_skip = true
  360.     else
  361.       super
  362.     end
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 处理输入等待
  366.   #--------------------------------------------------------------------------
  367.   def input_pause
  368.     self.pause = true
  369.     wait(10)
  370.     Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
  371.     Input.update
  372.     self.pause = false
  373.   end
  374.   #--------------------------------------------------------------------------
  375.   # ● 处理选项的输入
  376.   #--------------------------------------------------------------------------
  377.   def input_choice
  378.     @choice_window.start
  379.     Fiber.yield while @choice_window.active
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● 处理数值的输入
  383.   #--------------------------------------------------------------------------
  384.   def input_number
  385.     @number_window.start
  386.     Fiber.yield while @number_window.active
  387.   end
  388.   #--------------------------------------------------------------------------
  389.   # ● 处理物品的选择
  390.   #--------------------------------------------------------------------------
  391.   def input_item
  392.     @item_window.start
  393.     Fiber.yield while @item_window.active
  394.   end
  395. end
复制代码
喵呜喵5 发表于 2015-3-2 18:07:52
R9560 发表于 2015-3-1 23:32
我找到你说的那个地方后,找不到在哪改位置啊。。请问改动哪里是管坐标的啊..














R9560 发表于 2015-3-1 23:32:49
泉塚四季 发表于 2015-3-1 23:27
你之前怎么改窗口位置的就把你所做的改动原样放到Window_Message 的 def update_placement 里改一遍 ...

  我找到你说的那个地方后,找不到在哪改位置啊。。请问改动哪里是管坐标的啊..


#--------------------------------------------------------------------------
  # ● 处理纤程的主逻辑
  #--------------------------------------------------------------------------
  def fiber_main
    $game_message.visible = true
    update_background
    update_placement
    loop do
      process_all_text if $game_message.has_text?
      process_input
      $game_message.clear
      @gold_window.close
      Fiber.yield
      break unless text_continue?
    end
    close_and_wait
    $game_message.visible = false
    @fiber = nil
  end
  #--------------------------------------------------------------------------
  # ● 更新窗口背景
  #--------------------------------------------------------------------------
  def update_placement
    @background = $game_message.background
    self.opacity = @background == 0 ? 255 : 0
  end
泉塚四季 发表于 2015-3-1 23:27:04
你之前怎么改窗口位置的就把你所做的改动原样放到Window_Message 的 def update_placement 里改一遍

点评

我找到你说的那个地方后,找不到在哪改位置啊。。请问改动哪里是管坐标的啊。。 #-------------------------------------------------------------------------- # ...   发表于 2015-3-1 23:32
泉塚四季 发表于 2015-3-1 22:56:08
对话框的位置在每次打开对话框时会通过 update_placement 方法重置,因此修改这个方法就可以了

点评

我全局搜索你那个英文之后,把找到的全删了,结果报错了。。。  发表于 2015-3-1 23:03
不太懂您的意思。。请问具体怎么操作啊。。。  发表于 2015-3-1 23:00
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-15 20:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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