| 本帖最后由 fangyc 于 2013-8-21 12:18 编辑 
 我估计把Sprite_Base的194和195行删去,插入下面几行,估计可行
 但你仍需把512x512的素材拼成5行20列的才行。使用默认素材也没问题。复制代码      sw = sprite.bitmap.width / 5
      sx = (sw - 192) / 2
      sprite.src_rect.set(pattern % 5 * sw + sx,
        pattern % 100 / 5 * sw + sx, 192, 192)
 以防万一,贴上完整方法
 
 #--------------------------------------------------------------------------  # ● 设置动画的精灵  #     frame : 帧数据(RPG::Animation::Frame)  #--------------------------------------------------------------------------  def animation_set_sprites(frame)    cell_data = frame.cell_data    @ani_sprites.each_with_index do |sprite, i|      next unless sprite      pattern = cell_data[i, 0]      if !pattern || pattern < 0        sprite.visible = false        next      end      sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2      sprite.visible = true      sw = sprite.bitmap.width / 5      sx = (sw - 192) / 2      sprite.src_rect.set(pattern % 5 * sw + sx,        pattern % 100 / 5 * sw + sx, 192, 192)      if @ani_mirror        sprite.x = @ani_ox - cell_data[i, 1]        sprite.y = @ani_oy + cell_data[i, 2]        sprite.angle = (360 - cell_data[i, 4])        sprite.mirror = (cell_data[i, 5] == 0)      else        sprite.x = @ani_ox + cell_data[i, 1]        sprite.y = @ani_oy + cell_data[i, 2]        sprite.angle = cell_data[i, 4]        sprite.mirror = (cell_data[i, 5] == 1)      end      sprite.z = self.z + 300 + i      sprite.ox = 96      sprite.oy = 96      sprite.zoom_x = cell_data[i, 3] / 100.0      sprite.zoom_y = cell_data[i, 3] / 100.0      sprite.opacity = cell_data[i, 6] * self.opacity / 255.0      sprite.blend_type = cell_data[i, 7]    end  end
#-------------------------------------------------------------------------- 
  # ● 设置动画的精灵 
  #     frame : 帧数据(RPG::Animation::Frame) 
  #-------------------------------------------------------------------------- 
  def animation_set_sprites(frame) 
    cell_data = frame.cell_data 
    @ani_sprites.each_with_index do |sprite, i| 
      next unless sprite 
      pattern = cell_data[i, 0] 
      if !pattern || pattern < 0 
        sprite.visible = false 
        next 
      end 
      sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2 
      sprite.visible = true 
      sw = sprite.bitmap.width / 5 
      sx = (sw - 192) / 2 
      sprite.src_rect.set(pattern % 5 * sw + sx, 
        pattern % 100 / 5 * sw + sx, 192, 192) 
      if @ani_mirror 
        sprite.x = @ani_ox - cell_data[i, 1] 
        sprite.y = @ani_oy + cell_data[i, 2] 
        sprite.angle = (360 - cell_data[i, 4]) 
        sprite.mirror = (cell_data[i, 5] == 0) 
      else 
        sprite.x = @ani_ox + cell_data[i, 1] 
        sprite.y = @ani_oy + cell_data[i, 2] 
        sprite.angle = cell_data[i, 4] 
        sprite.mirror = (cell_data[i, 5] == 1) 
      end 
      sprite.z = self.z + 300 + i 
      sprite.ox = 96 
      sprite.oy = 96 
      sprite.zoom_x = cell_data[i, 3] / 100.0 
      sprite.zoom_y = cell_data[i, 3] / 100.0 
      sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 
      sprite.blend_type = cell_data[i, 7] 
    end 
  end 
 |