Project1
标题:
这是咋回事呀?Sprite_Battler错误
[打印本页]
作者:
guorenyan
时间:
2010-10-21 19:36
标题:
这是咋回事呀?Sprite_Battler错误
本帖最后由 fux2 于 2010-10-21 19:43 编辑
这是咋了,一用法就错误
我用的脚本
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
# 战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视。
#
# 处理战斗图片动画
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :battler # 战斗者
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
# battler : 战斗者 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
#===========================================================================
# 超级战斗修改,@nx表示当前的帧数,@xbit表示当前的图像。刚开始的时候都是0值。
@nx = 0
@xbit = 0
#===========================================================================
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 战斗者为 nil 的情况下
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
# 文件名和色相与当前情况有差异的情况下
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
# 获取、设置位图
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 12
self.oy = @height
end
#===超级战斗修改===========================================================
@nx += 1
@nx %= 40
@xbit = @nx / 10 * self.bitmap.width/4
self.src_rect.set(@xbit, 0, self.bitmap.width/4, self.bitmap.height)
#==========================================================================
# 动画 ID 与当前的情况有差异的情况下
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
# 明灭
if @battler.blink
blink_on
else
blink_off
end
# 不可见的情况下
unless @battler_visible
#进入战斗角色出现
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
if @battler.is_a?(Game_Enemy)
appear
else
@battler.battler_name = @battler.battler_name.split(/-/)[0]
end
@battler_visible = true
end
end
# 可见的情况下
if @battler_visible
# 逃跑
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
# 白色闪烁
if @battler.white_flash
whiten
@battler.white_flash = false
end
# 动画
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
# 伤害
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
# korapusu
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
collapse
else
$game_system.se_play($data_system.actor_collapse_se)
@battler.battler_name = @battler.battler_name.split(/-/)[0]
@battler.battler_name = "dead"
end
@battler_visible = false
end
end
# 设置活动块的坐标
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
end
#--------------------------------------#
# 大话西游单机论坛 [url]www.ie886.com[/url] #
#--------------------------------------#
复制代码
作者:
EngShun
时间:
2010-10-21 21:58
请将工程附上。
作者:
逸豫
时间:
2010-10-21 23:24
dispose了已经被dispose的Sprite
作者:
乌有君
时间:
2010-10-21 23:29
本帖最后由 匿名 于 2010-10-21 23:30 编辑
DISPOSE什么最讨厌了
汝等可以灰常有爱地去Sprite里直接
alter dispose fuck!
def dispose
unless disposed?
fuck!
end
end
然后就像代码中的英文那样不用注释地表达出了一种神奇的感情……
作者:
moy
时间:
2010-10-22 00:19
回复
Anonymous
的帖子
def dispose
super if not self.disposed?
end
咳咳....我是用super的...(当然,这是window里面的dispose就是..)
求解alter和alias的区别{:nm_1:}
作者:
orochi2k
时间:
2010-10-22 00:27
好吧,偶华丽地拼错了- -0
作者:
guorenyan
时间:
2010-10-22 17:14
有什么办法可以解决?
作者:
orochi2k
时间:
2010-10-22 17:38
本帖最后由 orochi2k 于 2010-10-22 18:11 编辑
有什么办法可以解决?
guorenyan 发表于 2010-10-22 17:14
其实我们已经解决了
把这段代码随便插在一个空白的新建脚本里- -0
class Sprite
alias fuck! dispose
def dispose
unless disposed?
fuck!
end
end
end
记住,你要虔诚地打那个fuck!,否则可能不灵验(大雾)
作者:
guorenyan
时间:
2010-10-22 20:42
偶
解决了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X5.0