截图
 
工程截图
事件截图(第二张图有点问题,不过影响不大。)
地图效果,多动画(可以重叠)
地图效果,"全屏动画只显示一次"
战斗(附加了状态)
使用还原后
 脚本
 
基础
RUBY 代码 
[code]classRPG::Sprite < ::Sprite 
  def initialize(viewport = nil) 
    super(viewport) 
    @_whiten_duration = 0 
    @_appear_duration = 0 
    @_escape_duration = 0 
    @_collapse_duration = 0 
    @_damage_duration = 0 
    #@_animation_duration = 0 
    @_blink = false 
    @_animation = [] 
    @_animation_hit = [] 
    @_animation_duration = [] 
    @_animation_sprites = [] 
    @_loop_animation = [] 
    @_loop_animation_sprites = [] 
    @_loop_animation_index = [] 
  end 
  def animation(animation, hit) 
    #dispose_animation 
    returnif animation == nil 
    @_animation  0 
      @_whiten_duration -= 1 
      self.color.alpha = 128 - (16 - @_whiten_duration) * 10 
    end 
    if@_appear_duration > 0 
      @_appear_duration -= 1 
      self.opacity = (16 - @_appear_duration) * 16 
    end 
    if@_escape_duration > 0 
      @_escape_duration -= 1 
      self.opacity = 256 - (32 - @_escape_duration) * 10 
    end 
    if@_collapse_duration > 0 
      @_collapse_duration -= 1 
      self.opacity = 256 - (48 - @_collapse_duration) * 6 
    end 
    if@_damage_duration > 0 
      @_damage_duration -= 1 
      case@_damage_duration 
      when38..39 
        @_damage_sprite.y -= 4 
      when36..37 
        @_damage_sprite.y -= 2 
      when34..35 
        @_damage_sprite.y += 2 
      when28..33 
        @_damage_sprite.y += 4 
      end 
      @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32 
      if@_damage_duration == 0 
        dispose_damage 
      end 
    end 
    if@_animation.size > 0and(Graphics.frame_count % 2 == 0) 
      for i in 0...@_animation_duration.size
        @_animation_duration  -= 1 
      end 
      update_animation 
    end 
    if@_loop_animation.size > 0and(Graphics.frame_count % 2 == 0) 
      update_loop_animation 
      for i in0...@_loop_animation_index.size 
        @_loop_animation_index += 1 
        @_loop_animation_index %= @_loop_animation.frame_max 
      end 
    end 
    if@_blink 
      @_blink_count = (@_blink_count + 1) % 32 
      if@_blink_count < 16 
        alpha = (16 - @_blink_count) * 6 
      else 
        alpha = (@_blink_count - 16) * 6 
      end 
      self.color.set(255, 255, 255, alpha) 
    end 
    @@_animations.clear 
  end 
  def update_animation 
    for i in0...@_animation_duration.size 
      if@_animation_duration  |