Project1
标题:
undefined method 'dispose' for nil:NilClass
[打印本页]
作者:
ok侠
时间:
2011-7-19 22:52
标题:
undefined method 'dispose' for nil:NilClass
这个在倒数第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
dsu_plus_rewardpost_czw
作者:
Kimu
时间:
2011-7-19 22:58
因为@enemy_hp_window = nil
作者:
八云紫
时间:
2011-7-19 22:58
@enemy_hp_window.dispose unless @enemy_hp_window.disposed?
只是原来的脚本应该不会出现这个问题。 多半是冲突把。
作者:
ok侠
时间:
2011-7-19 23:20
那就惨了,就是解决不了罗!能不能用其它的表示方式,或者我在其它地方加一个释放窗口的脚本
作者:
summer92
时间:
2011-7-20 11:02
本帖最后由 summer92 于 2011-7-20 11:02 编辑
把释放修改成这样:
@enemy_hp_window.dispose if @enemy_hp_window != nil
如果不行,就准备大修把
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1