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

Project1

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

[已经解决] 关于技能界面变黑问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
95
在线时间
87 小时
注册时间
2011-7-27
帖子
32
跳转到指定楼层
1
发表于 2011-8-18 14:14:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
先看图




然后我点了下治疗,就变成下面的样子了??










背景图完全黑了。。。

这是怎么回事?我怀疑是scene_skill里出错了,也有可能是别地地方出错了,望高手指点指点我怎么改呀!!
先附上scene_skill的脚本
  1. #==============================================================================
  2. # ■ Scene_Skill
  3. #------------------------------------------------------------------------------
  4. #  处理特技画面的类。
  5. #==============================================================================

  6. class Scene_Skill
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #     actor_index : 角色索引
  10.   #--------------------------------------------------------------------------
  11.   def initialize(actor_index = 0, equip_index = 0)
  12.     @actor_index = actor_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主处理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     # 获取角色
  19.     @actor = $game_party.actors[@actor_index]
  20.     #插入图片
  21.     @menu_com = Sprite.new
  22.     @menu_com.bitmap = RPG::Cache.picture("特技.png")
  23.     # 生成帮助窗口、状态窗口、特技窗口
  24.     @help_window = Window_Help_Self.new
  25.     @status_window = Window_SkillStatus.new(@actor)
  26.     @skill_window = Window_Skill.new(@actor)
  27.     # 关联帮助窗口
  28.     @skill_window.help_window = @help_window
  29.     # 生成目标窗口 (设置为不可见・不活动)
  30.     @target_window = Window_Target.new
  31.     @target_window.visible = false
  32.     @target_window.active = false
  33.     # 执行过渡
  34.     Graphics.transition
  35.     # 主循环
  36.     loop do
  37.       # 刷新游戏画面
  38.       Graphics.update
  39.       # 刷新输入信息
  40.       Input.update
  41.       # 刷新画面
  42.       update
  43.       # 如果画面切换的话就中断循环
  44.       if $scene != self
  45.         break
  46.       end
  47.     end
  48.     # 准备过渡
  49.     Graphics.freeze
  50.     # 释放窗口
  51.     @help_window.dispose
  52.     @status_window.dispose
  53.     @skill_window.dispose
  54.     @target_window.dispose
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 刷新画面
  58.   #--------------------------------------------------------------------------
  59.   def update
  60.     # 刷新窗口
  61.     @help_window.update
  62.     @status_window.update
  63.     @skill_window.update
  64.     @target_window.update
  65.     # 特技窗口被激活的情况下: 调用 update_skill
  66.     if @skill_window.active
  67.       update_skill
  68.       return
  69.     end
  70.     # 目标窗口被激活的情况下: 调用 update_target
  71.     if @target_window.active
  72.       update_target
  73.       return
  74.     end
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 刷新画面 (特技窗口被激活的情况下)
  78.   #--------------------------------------------------------------------------
  79.   def update_skill
  80.     # 按下 B 键的情况下
  81.     if Input.trigger?(Input::B)
  82.       # 演奏取消 SE
  83.       $game_system.se_play($data_system.cancel_se)
  84.       # 切换到菜单画面
  85.       $scene = Scene_Menu.new(1)
  86.       return
  87.     end
  88.     # 按下 C 键的情况下
  89.     if Input.trigger?(Input::C)
  90.       # 获取特技窗口现在选择的特技的数据
  91.       @skill = @skill_window.skill
  92.       # 不能使用的情况下
  93.       if @skill == nil or not @actor.skill_can_use?(@skill.id)
  94.         # 演奏冻结 SE
  95.         $game_system.se_play($data_system.buzzer_se)
  96.         return
  97.       end
  98.       # 演奏确定 SE
  99.       $game_system.se_play($data_system.decision_se)
  100.       # 效果范围是我方的情况下
  101.       if @skill.scope >= 3
  102.         # 激活目标窗口
  103.         @menu_com = Sprite.new
  104.         @menu_com.bitmap = RPG::Cache.picture("使用物品.png")
  105.         @menu_com.z=110
  106.         @skill_window.active = false
  107.         @target_window.x = 304
  108.         @target_window.visible = true
  109.         @target_window.active = true
  110.         # 设置效果范围 (单体/全体) 的对应光标位置
  111.         if @skill.scope == 4 || @skill.scope == 6
  112.           @target_window.index = -1
  113.         elsif @skill.scope == 7
  114.           @target_window.index = @actor_index - 10
  115.         else
  116.           @target_window.index = 0
  117.         end
  118.       # 效果在我方以外的情况下
  119.       else
  120.         # 公共事件 ID 有效的情况下
  121.         if @skill.common_event_id > 0
  122.           # 预约调用公共事件
  123.           $game_temp.common_event_id = @skill.common_event_id
  124.           # 演奏特技使用时的 SE
  125.           $game_system.se_play(@skill.menu_se)
  126.           # 消耗 SP
  127.           @actor.sp -= @skill.sp_cost
  128.           # 再生成各窗口的内容
  129.           @status_window.refresh
  130.           @skill_window.refresh
  131.           @target_window.refresh
  132.           # 切换到地图画面
  133.           $scene = Scene_Map.new
  134.           return
  135.         end
  136.       end
  137.       return
  138.     end
  139.     # 按下 R 键的情况下
  140.     if Input.trigger?(Input::R)
  141.       # 演奏光标 SE
  142.       $game_system.se_play($data_system.cursor_se)
  143.       # 移至下一位角色
  144.       @actor_index += 1
  145.       @actor_index %= $game_party.actors.size
  146.       # 切换到别的特技画面
  147.       $scene = Scene_Skill.new(@actor_index)
  148.       return
  149.     end
  150.     # 按下 L 键的情况下
  151.     if Input.trigger?(Input::L)
  152.       # 演奏光标 SE
  153.       $game_system.se_play($data_system.cursor_se)
  154.       # 移至上一位角色
  155.       @actor_index += $game_party.actors.size - 1
  156.       @actor_index %= $game_party.actors.size
  157.       # 切换到别的特技画面
  158.       $scene = Scene_Skill.new(@actor_index)
  159.       return
  160.     end
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 刷新画面 (目标窗口被激活的情况下)
  164.   #--------------------------------------------------------------------------
  165.   def update_target
  166.     # 按下 B 键的情况下
  167.     if Input.trigger?(Input::B)
  168.       # 演奏取消 SE
  169.       $game_system.se_play($data_system.cancel_se)
  170.       # 删除目标窗口
  171.       @skill_window.active = true
  172.       @target_window.visible = false
  173.       @target_window.active = false
  174.       @menu_com.dispose
  175.       return
  176.     end
  177.     # 按下 C 键的情况下
  178.     if Input.trigger?(Input::C)
  179.       # 因为 SP 不足而无法使用的情况下
  180.       unless @actor.skill_can_use?(@skill.id)
  181.         # 演奏冻结 SE
  182.         $game_system.se_play($data_system.buzzer_se)
  183.         return
  184.       end
  185.       # 目标是全体的情况下
  186.       if @target_window.index == -1
  187.         # 对同伴全体应用特技使用效果
  188.         used = false
  189.         for i in $game_party.actors
  190.           used |= i.skill_effect(@actor, @skill)
  191.         end
  192.       end
  193.       # 目标是使用者的情况下
  194.       if @target_window.index <= -2
  195.         # 对目标角色应用特技的使用效果
  196.         target = $game_party.actors[@target_window.index + 10]
  197.         used = target.skill_effect(@actor, @skill)
  198.       end
  199.       # 目标是单体的情况下
  200.       if @target_window.index >= 0
  201.         # 对目标角色应用特技的使用效果
  202.         target = $game_party.actors[@target_window.index]
  203.         used = target.skill_effect(@actor, @skill)
  204.       end
  205.       # 使用特技的情况下
  206.       if used
  207.         # 演奏特技使用时的 SE
  208.         $game_system.se_play(@skill.menu_se)
  209.         # 消耗 SP
  210.         @actor.sp -= @skill.sp_cost
  211.         # 再生成各窗口内容
  212.         @status_window.refresh
  213.         @skill_window.refresh
  214.         @target_window.refresh
  215.         # 全灭的情况下
  216.         if $game_party.all_dead?
  217.           # 切换到游戏结束画面
  218.           $scene = Scene_Gameover.new
  219.           return
  220.         end
  221.         # 公共事件 ID 有效的情况下
  222.         if @skill.common_event_id > 0
  223.           # 预约调用公共事件
  224.           $game_temp.common_event_id = @skill.common_event_id
  225.           # 切换到地图画面
  226.           $scene = Scene_Map.new
  227.           return
  228.         end
  229.       end
  230.       # 无法使用特技的情况下
  231.       unless used
  232.         # 演奏冻结 SE
  233.         $game_system.se_play($data_system.buzzer_se)
  234.       end
  235.       return
  236.     end
  237.   end
  238. end
复制代码

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

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

烫烫烫开拓者

2
发表于 2011-8-18 15:10:04 | 只看该作者
55行附件缺少一个
@menu_com.dispose

104行的时候@menu_com还没有被时候楼主又建立新的,然后被释放了……真囧。
所以改成175行和104~106行把@menu_com换成@menu_com2吧
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
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
星屑
95
在线时间
87 小时
注册时间
2011-7-27
帖子
32
3
 楼主| 发表于 2011-8-18 16:38:19 | 只看该作者
orzfly 发表于 2011-8-18 15:10
55行附件缺少一个
@menu_com.dispose

明白了,我真囧。。。
谢谢了。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 06:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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