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

Project1

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

[已经过期] 关于RGSS3窗口消除的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
210
在线时间
78 小时
注册时间
2010-7-1
帖子
58
跳转到指定楼层
1
发表于 2012-7-11 12:06:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 abc1236762 于 2012-7-11 12:12 编辑

要如何在选择装备、技能选项时或取消选择技能、装备选项时消除Window_MenuStutasBody窗口?

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Cache
  4. #------------------------------------------------------------------------------
  5. #  此模块加载所有图像,建立并储存 Bitmap 对象。为加快加载速度并节省内存,
  6. #  此模块将以建立的 bitmap 对象储存在内定哈希表中,使得程序在需要已存在
  7. #  的图像时能快速读取 bitmap 对象。
  8. #==============================================================================
  9. module Cache
  10.   #--------------------------------------------------------------------------
  11.   # ● 取得角色全身像图
  12.   #--------------------------------------------------------------------------
  13.   def self.body(filename)
  14.     load_bitmap("Graphics/Bodies/", filename)
  15.   end
  16. end
  17.  
  18. #encoding:utf-8
  19. #==============================================================================
  20. # ■ Window_MenuStutasBody
  21. #------------------------------------------------------------------------------
  22. #  选单画面中,显示队伍成员全身像的窗口
  23. #==============================================================================
  24.  
  25. class Window_MenuStutasBody < Window_Base
  26.   #--------------------------------------------------------------------------
  27.   # ● 初始化物件
  28.   #--------------------------------------------------------------------------
  29.   def initialize(actor)
  30.     super(x, y, windows_width, windows_height)
  31.     @actor = actor
  32.     @graphic = Sprite.new(self.viewport)
  33.     @graphic.x = 960
  34.     @graphic.y = 544
  35.     refresh
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 取得窗口的坐标与大小
  39.   #--------------------------------------------------------------------------
  40.   def x
  41.     return 0 - standard_padding
  42.   end
  43.   def y
  44.     return 0 - standard_padding
  45.   end
  46.   def windows_width
  47.     return Graphics.width + standard_padding * 2
  48.   end
  49.   def windows_height
  50.     return Graphics.height + standard_padding * 2
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 设定角色
  54.   #--------------------------------------------------------------------------
  55.   def actor=(actor)
  56.     return if @actor == actor
  57.     @actor = actor
  58.     refresh
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 解放
  62.   #--------------------------------------------------------------------------
  63.   def dispose
  64.     @graphic.dispose
  65.     super
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 显示
  69.   #--------------------------------------------------------------------------
  70.   def refresh
  71.     self.contents.clear
  72.     name = "Character" + @actor.id.to_s
  73.     begin
  74.       @graphic.bitmap = Cache.body(name)
  75.       @graphic.ox = @graphic.bitmap.width
  76.       @graphic.oy = @graphic.bitmap.height
  77.     rescue
  78.     end
  79.   end
  80. end
  81.  
  82. #encoding:utf-8
  83. #==============================================================================
  84. # ■ Scene_Menu
  85. #------------------------------------------------------------------------------
  86. #  选单画面
  87. #==============================================================================
  88.  
  89. class Scene_Menu < Scene_MenuBase
  90.   #--------------------------------------------------------------------------
  91.   # ● 开始处理
  92.   #--------------------------------------------------------------------------
  93.   def start
  94.     super
  95.     create_command_window
  96.     create_information_window
  97.     create_status_window
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 生成指令窗口
  101.   #--------------------------------------------------------------------------
  102.   def create_command_window
  103.     @command_window = Window_MenuCommand.new
  104.     @command_window.y = 2
  105.     @command_window.opacity = 0
  106.     @command_window.set_handler(:item,      method(:command_item))
  107.     @command_window.set_handler(:skill,     method(:command_personal))
  108.     @command_window.set_handler(:equip,     method(:command_personal))
  109.     @command_window.set_handler(:status,    method(:command_personal))
  110.     @command_window.set_handler(:formation, method(:command_formation))
  111.     @command_window.set_handler(:save,      method(:command_save))
  112.     @command_window.set_handler(:game_end,  method(:command_game_end))
  113.     @command_window.set_handler(:cancel,    method(:return_scene))
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 切换角色
  117.   #--------------------------------------------------------------------------
  118.   def on_actor_change
  119.     @menustutasbody_window.actor = @actor
  120.     @menustutasbody_window.activate
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 生成游戏信息窗口
  124.   #--------------------------------------------------------------------------
  125.   def create_information_window #
  126.     @gold_window = Window_Information.new
  127.     @gold_window.x = 0
  128.     @gold_window.y = Graphics.height - @gold_window.height - 2
  129.     @gold_window.opacity = 0
  130.   end #
  131.   #--------------------------------------------------------------------------
  132.   # ● 生成状态窗口
  133.   #--------------------------------------------------------------------------
  134.   def create_status_window
  135.     @status_window = Window_MenuStatus.new(0, @command_window.height - 2 + 2)
  136.     @status_window.opacity = 0
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 指令“物品”
  140.   #--------------------------------------------------------------------------
  141.   def command_item
  142.     SceneManager.call(Scene_Item)
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 指令“技能”“装备”“状态”
  146.   #--------------------------------------------------------------------------
  147.   def command_personal
  148.     @status_window.select_last
  149.     @menustutasbody_window = Window_MenuStutasBody.new(@actor)
  150.     @menustutasbody_window.opacity = 0
  151.     @status_window.activate
  152.     @menustutasbody_window.activate
  153.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  154.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 指令“整队”
  158.   #--------------------------------------------------------------------------
  159.   def command_formation
  160.     @status_window.select_last
  161.     @status_window.activate
  162.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  163.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # ● 指令“存盘”
  167.   #--------------------------------------------------------------------------
  168.   def command_save
  169.     SceneManager.call(Scene_Save)
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 指令“结束游戏”
  173.   #--------------------------------------------------------------------------
  174.   def command_game_end
  175.     SceneManager.call(Scene_End)
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 个人指令“确定”
  179.   #--------------------------------------------------------------------------
  180.   def on_personal_ok
  181.     case @command_window.current_symbol
  182.     when :skill
  183.       SceneManager.call(Scene_Skill)
  184.     when :equip
  185.       SceneManager.call(Scene_Equip)
  186.     when :status
  187.       SceneManager.call(Scene_Status)
  188.     end
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 个人指令“取消”
  192.   #--------------------------------------------------------------------------
  193.   def on_personal_cancel
  194.     @status_window.unselect
  195.     @command_window.activate
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 整队“确定”
  199.   #--------------------------------------------------------------------------
  200.   def on_formation_ok
  201.     if @status_window.pending_index >= 0
  202.       $game_party.swap_order(@status_window.index,
  203.                              @status_window.pending_index)
  204.       @status_window.pending_index = -1
  205.       @status_window.redraw_item(@status_window.index)
  206.     else
  207.       @status_window.pending_index = @status_window.index
  208.     end
  209.     @status_window.activate
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ● 整队“取消”
  213.   #--------------------------------------------------------------------------
  214.   def on_formation_cancel
  215.     if @status_window.pending_index >= 0
  216.       @status_window.pending_index = -1
  217.       @status_window.activate
  218.     else
  219.       @status_window.unselect
  220.       @command_window.activate
  221.     end
  222.   end
  223. end


http://115.com/file/an81fpn0#
Project2 .rar

Lv3.寻梦者

梦石
0
星屑
1384
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

2
发表于 2012-7-11 14:04:19 | 只看该作者
本帖最后由 铅笔描绘的思念 于 2012-7-11 16:41 编辑

@menustutasbody_window.dispose
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
210
在线时间
78 小时
注册时间
2010-7-1
帖子
58
3
 楼主| 发表于 2012-7-11 14:39:02 | 只看该作者
补了你的代码
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 个人指令“确定”
  3.   #--------------------------------------------------------------------------
  4.   def on_personal_ok
  5.     @menustutasbody_window.hide
  6.     case @command_window.current_symbol
  7.     when :skill
  8.       SceneManager.call(Scene_Skill)
  9.     when :equip
  10.       SceneManager.call(Scene_Equip)
  11.     when :status
  12.       SceneManager.call(Scene_Status)
  13.     end
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 个人指令“取消”
  17.   #--------------------------------------------------------------------------
  18.   def on_personal_cancel
  19.     @menustutasbody_window.hide
  20.     @status_window.unselect
  21.     @command_window.activate
  22.   end


还是有以下几点问题
1.        用方向键切换至别的角色时,全身像不会更新。

2.        按esc重选择角色退回选单时,全身像还在。

3.        进到技能画面在退出时出现错误。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1384
在线时间
962 小时
注册时间
2012-4-30
帖子
1475

开拓者

4
发表于 2012-7-11 17:03:04 | 只看该作者
abc1236762 发表于 2012-7-11 14:39
补了你的代码
  #--------------------------------------------------------------------------
  # ● 个 ...

不会更新的话。。。我木有办法。。找别人吧。。b= =。。其他两个比较容易。。替换Scene_Menu
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Menu
  4. #------------------------------------------------------------------------------
  5. #  選單畫面
  6. #==============================================================================

  7. class Scene_Menu < Scene_MenuBase
  8.   #-------------------------------------------------------------------------- #
  9.   # ● 開始處理 #
  10.   #-------------------------------------------------------------------------- #
  11.   def start #
  12.     super #
  13.     create_command_window #
  14.     create_information_window #
  15.     create_status_window #
  16.   end #
  17.   #--------------------------------------------------------------------------
  18.   # ● 生成指令視窗
  19.   #--------------------------------------------------------------------------
  20.   def create_command_window
  21.     @command_window = Window_MenuCommand.new
  22.     @command_window.y = 2 #
  23.     @command_window.opacity = 0 #
  24.     @command_window.set_handler(:item,      method(:command_item))
  25.     @command_window.set_handler(:skill,     method(:command_personal))
  26.     @command_window.set_handler(:equip,     method(:command_personal))
  27.     @command_window.set_handler(:status,    method(:command_personal))
  28.     @command_window.set_handler(:formation, method(:command_formation))
  29.     @command_window.set_handler(:save,      method(:command_save))
  30.     @command_window.set_handler(:game_end,  method(:command_game_end))
  31.     @command_window.set_handler(:cancel,    method(:return_scene))
  32.   end
  33.   #-------------------------------------------------------------------------- #
  34.   # ● 生成遊戲資訊視窗 #
  35.   #-------------------------------------------------------------------------- #
  36.   def create_information_window #
  37.     @gold_window = Window_Information.new #
  38.     @gold_window.x = 0 #
  39.     @gold_window.y = Graphics.height - @gold_window.height - 2 #
  40.     @gold_window.opacity = 0 #
  41.   end #
  42.   #--------------------------------------------------------------------------
  43.   # ● 生成狀態視窗
  44.   #--------------------------------------------------------------------------
  45.   def create_status_window
  46.     @status_window = Window_MenuStatus.new(0, @command_window.height - 2 + 2) #@status_window = Window_MenuStatus.new(@command_window.width, 0)
  47.     @status_window.opacity = 0 #
  48.   end  
  49.   #--------------------------------------------------------------------------
  50.   # ● 生成body視窗 @menustutasbody_window.refresh
  51.   #--------------------------------------------------------------------------
  52.   def create_bodystatus_window
  53.     @menustutasbody_window = Window_MenuStutasBody.new(@actor)
  54.     @menustutasbody_window.opacity = 0
  55.   end  
  56.   #--------------------------------------------------------------------------
  57.   # ● 指令“物品”
  58.   #--------------------------------------------------------------------------
  59.   def command_item
  60.     SceneManager.call(Scene_Item)
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 指令“技能”“裝備”“狀態”
  64.   #--------------------------------------------------------------------------
  65.   def command_personal
  66.     @status_window.select_last
  67.     @status_window.activate
  68.     create_bodystatus_window #
  69.     @status_window.set_handler(:ok,     method(:on_personal_ok))
  70.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 指令“整隊”
  74.   #--------------------------------------------------------------------------
  75.   def command_formation
  76.     @status_window.select_last
  77.     @status_window.activate
  78.     @status_window.set_handler(:ok,     method(:on_formation_ok))
  79.     @status_window.set_handler(:cancel, method(:on_formation_cancel))
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 指令“存檔”
  83.   #--------------------------------------------------------------------------
  84.   def command_save
  85.     SceneManager.call(Scene_Save)
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 指令“結束游戲”
  89.   #--------------------------------------------------------------------------
  90.   def command_game_end
  91.     SceneManager.call(Scene_End)
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 個人指令“確定”
  95.   #--------------------------------------------------------------------------
  96.   def on_personal_ok
  97.     case @command_window.current_symbol
  98.     when :skill
  99.       SceneManager.call(Scene_Skill)
  100.     when :equip
  101.       SceneManager.call(Scene_Equip)
  102.     when :status
  103.       SceneManager.call(Scene_Status)
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 個人指令“取消”
  108.   #--------------------------------------------------------------------------
  109.   def on_personal_cancel
  110.     @status_window.unselect
  111.     @command_window.activate
  112.     @menustutasbody_window.dispose
  113.   end
  114.   #--------------------------------------------------------------------------
  115.   # ● 整隊“確定”
  116.   #--------------------------------------------------------------------------
  117.   def on_formation_ok
  118.     if @status_window.pending_index >= 0
  119.       $game_party.swap_order(@status_window.index,
  120.                              @status_window.pending_index)
  121.       @status_window.pending_index = -1
  122.       @status_window.redraw_item(@status_window.index)
  123.     else
  124.       @status_window.pending_index = @status_window.index
  125.     end
  126.     @status_window.activate
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 整隊“取消”
  130.   #--------------------------------------------------------------------------
  131.   def on_formation_cancel
  132.     if @status_window.pending_index >= 0
  133.       @status_window.pending_index = -1
  134.       @status_window.activate
  135.     else
  136.       @status_window.unselect
  137.       @command_window.activate
  138.     end
  139.   end
  140. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
210
在线时间
78 小时
注册时间
2010-7-1
帖子
58
5
 楼主| 发表于 2012-7-11 18:26:47 | 只看该作者
出现
Script '◎Windows_Base' line 84:RGSSError occurred
disposed window
这错误窗口
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 15:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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