Project1

标题: 这是咋回事呀?Sprite_Battler错误 [打印本页]

作者: guorenyan    时间: 2010-10-21 19:36
标题: 这是咋回事呀?Sprite_Battler错误
本帖最后由 fux2 于 2010-10-21 19:43 编辑

这是咋了,一用法就错误
我用的脚本
  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #
  7. # 处理战斗图片动画
  8. #==============================================================================



  9. class Sprite_Battler < RPG::Sprite
  10.   #--------------------------------------------------------------------------
  11.   # ● 定义实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_accessor :battler                  # 战斗者
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化对像
  16.   #     viewport : 显示端口
  17.   #     battler  : 战斗者 (Game_Battler)
  18.   #--------------------------------------------------------------------------
  19.   def initialize(viewport, battler = nil)
  20.     super(viewport)
  21.     @battler = battler
  22.     @battler_visible = false
  23.    
  24.    
  25. #===========================================================================
  26. # 超级战斗修改,@nx表示当前的帧数,@xbit表示当前的图像。刚开始的时候都是0值。

  27.     @nx = 0
  28.     @xbit = 0
  29. #===========================================================================   


  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 释放
  33.   #--------------------------------------------------------------------------
  34.   def dispose
  35.     if self.bitmap != nil
  36.       self.bitmap.dispose
  37.     end
  38.     super
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 刷新画面
  42.   #--------------------------------------------------------------------------
  43.   def update
  44.     super
  45.     # 战斗者为 nil 的情况下
  46.     if @battler == nil
  47.       self.bitmap = nil
  48.       loop_animation(nil)
  49.       return
  50.     end
  51.     # 文件名和色相与当前情况有差异的情况下
  52.     if @battler.battler_name != @battler_name or
  53.        @battler.battler_hue != @battler_hue
  54.       # 获取、设置位图
  55.       @battler_name = @battler.battler_name
  56.       @battler_hue = @battler.battler_hue
  57.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  58.       @width = bitmap.width
  59.       @height = bitmap.height
  60.       self.ox = @width / 12
  61.       self.oy = @height
  62.     end
  63.    
  64. #===超级战斗修改===========================================================      
  65.       @nx += 1
  66.       @nx %= 40
  67.       @xbit = @nx / 10 * self.bitmap.width/4
  68.       self.src_rect.set(@xbit, 0, self.bitmap.width/4, self.bitmap.height)
  69. #==========================================================================

  70.     # 动画 ID 与当前的情况有差异的情况下
  71.     if @battler.damage == nil and
  72.        @battler.state_animation_id != @state_animation_id
  73.       @state_animation_id = @battler.state_animation_id
  74.       loop_animation($data_animations[@state_animation_id])
  75.     end
  76.   
  77.     # 明灭
  78.     if @battler.blink
  79.       blink_on
  80.     else
  81.       blink_off
  82.     end
  83.     # 不可见的情况下
  84.     unless @battler_visible
  85.     #进入战斗角色出现
  86.       if not @battler.hidden and not @battler.dead? and
  87.          (@battler.damage == nil or @battler.damage_pop)
  88.         if @battler.is_a?(Game_Enemy)
  89.           appear
  90.         else
  91.           @battler.battler_name = @battler.battler_name.split(/-/)[0]
  92.         end
  93.         @battler_visible = true
  94.       end
  95.     end
  96.     # 可见的情况下
  97.     if @battler_visible
  98.       # 逃跑
  99.       if @battler.hidden
  100.         $game_system.se_play($data_system.escape_se)
  101.         escape
  102.         @battler_visible = false
  103.       end
  104.       # 白色闪烁
  105.       if @battler.white_flash
  106.         whiten
  107.         @battler.white_flash = false
  108.       end
  109.       # 动画
  110.       if @battler.animation_id != 0
  111.         animation = $data_animations[@battler.animation_id]
  112.         animation(animation, @battler.animation_hit)
  113.         @battler.animation_id = 0
  114.       end
  115.       # 伤害
  116.       if @battler.damage_pop
  117.         damage(@battler.damage, @battler.critical)
  118.         @battler.damage = nil
  119.         @battler.critical = false
  120.         @battler.damage_pop = false
  121.       end

  122.       # korapusu
  123.       if @battler.damage == nil and @battler.dead?
  124.         
  125.         if @battler.is_a?(Game_Enemy)
  126.           $game_system.se_play($data_system.enemy_collapse_se)   
  127.           collapse
  128.         else
  129.           $game_system.se_play($data_system.actor_collapse_se)
  130.           @battler.battler_name = @battler.battler_name.split(/-/)[0]
  131.           @battler.battler_name = "dead"
  132.         end
  133.         @battler_visible = false
  134.       end
  135.     end
  136.     # 设置活动块的坐标
  137.     self.x = @battler.screen_x
  138.     self.y = @battler.screen_y
  139.     self.z = @battler.screen_z
  140.   end
  141. end


  142. #--------------------------------------#
  143. #  大话西游单机论坛  [url]www.ie886.com[/url]     #
  144. #--------------------------------------#
复制代码

未命名.jpg (14.63 KB, 下载次数: 7)

未命名.jpg

作者: 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! X3.1