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

Project1

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

[已经解决] undefined method 'dispose' for nil:NilClass

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
937
在线时间
235 小时
注册时间
2011-6-9
帖子
42
跳转到指定楼层
1
发表于 2011-7-19 22:52:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个在倒数第4行   @enemy_hp_window.dispose  中的'dispose'
这个是什么问题啊,释放窗口的时候出错了,应该怎样解决呢??


#==============================================================================
# ■ 显示敌人血条 by 沉影不器
#------------------------------------------------------------------------------
# 功能描述:
#     ① 战斗时让敌人显示血条,宽度可定制
#     ② 可选功能: 显示具体生命值 显示敌人名称
# 使用说明:
#     ① 脚本插入到Main之前
#     ② 脚本第19行设定血条的默认宽度
#        为个别敌人指定血条宽度是"数据库-敌角色-备注栏"填写"hp_width=数值"
#     ③ 脚本第20行选择是否显示具体生命值
#     ④ 脚本第21行选择是否显示敌人名称
#     ⑤ 其它参数设定详见脚本
#     ⑥ 此脚本需要基础脚本[读取rmvx备注栏指定字段]
#==============================================================================
# ■ 参数设定
#==============================================================================
module Enemy_HP
  HP_WIDTH =  100                # 血条的默认宽度
  SHOW_VALUE = true                  # 是否显示敌人生命值
  SHOW_NAME = true                    # 是否显示敌人名称
  NAME_SIZE = 3                      # 敌人名称字体大小
  NAME_COLOR = 0                      # 敌人名称字体颜色
end
#==============================================================================
# ■ RPG
#==============================================================================
module RPG
  class Enemy
    def hp_width
      
    end
  end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ 血条宽度
  #--------------------------------------------------------------------------
  def hp_width
    return $data_enemies[@enemy_id].hp_width
  end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
  #--------------------------------------------------------------------------
  # ◎ 初始化对象
  #     viewport : 视区
  #     battler  : 战斗者 (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
    @effect_type = 0            # 效果种类
    @effect_duration = 0        # 效果剩余时间
    if @battler.is_a?(Game_Enemy)
      width = hp_width + 100
      height = 24 + 100
      x = @battler.screen_x - width/2
      y = @battler.screen_y - height/2+70
      # 调节名称位置
      if Enemy_HP::SHOW_NAME
        height += Enemy_HP::NAME_SIZE + 2
        y -= Enemy_HP::NAME_SIZE + 2
      end
      # 生成血条窗体
      @enemy_hp_window = Window_Base.new(x, y, width, height)
      @enemy_hp_window.opacity = 0
      @enemy_hp_window.contents_opacity = 0
      @enemy_hp_window.contents = Bitmap.new(width - 32, height - 32)
      @enemy_hp_window.draw_enemy_info(@battler, 0, 0, width )
      # 保存旧血量(控制刷新)
      @old_hp = -1
    end
  end
  #--------------------------------------------------------------------------
  # ◎ 释放
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
      @enemy_hp_window.dispose
    end
    super
  end

点评

发代码请用代码框  发表于 2011-7-19 22:58

Lv1.梦旅人

追从自然的旅行者
奇特空·煦

梦石
0
星屑
107
在线时间
1387 小时
注册时间
2010-12-31
帖子
4944

开拓者贵宾

2
发表于 2011-7-19 22:58:05 | 只看该作者
因为@enemy_hp_window = nil
回复

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
373
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

3
发表于 2011-7-19 22:58:08 | 只看该作者
@enemy_hp_window.dispose unless @enemy_hp_window.disposed?

只是原来的脚本应该不会出现这个问题。 多半是冲突把。

《天空之城 —— 破碎的命运》
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
937
在线时间
235 小时
注册时间
2011-6-9
帖子
42
4
 楼主| 发表于 2011-7-19 23:20:38 | 只看该作者
那就惨了,就是解决不了罗!能不能用其它的表示方式,或者我在其它地方加一个释放窗口的脚本
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1359
在线时间
676 小时
注册时间
2009-11-11
帖子
2800
5
发表于 2011-7-20 11:02:09 | 只看该作者
本帖最后由 summer92 于 2011-7-20 11:02 编辑

把释放修改成这样:

@enemy_hp_window.dispose if @enemy_hp_window != nil

如果不行,就准备大修把

点评

恩。。。我没看八云大的回复,我的跟他一样。。。。  发表于 2011-7-21 11:11
搞定了,谢谢  发表于 2011-7-20 19:38

嘿。嘿。嘿
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-23 00:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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