module RPG #40*2 = 80,X距離, 25*2 = 50,Y距離 #左上格X,Y轴 为120,225 ,X轴平移80,Y轴50
class Sprite < ::Sprite
def loop_animation(animation,ggreen,zzzz,mirr=0,oopacity=nil)
#if ggreen.is_a? == true
@ggreen = ggreen #无效?
@ggreen = 200 if @ggreen == nil
@oopacity = 255 if @oopacity == nil
#else
#end
@zzzz = zzzz #无效?->更正,要不与取相同名字,否则会覆盖
@mirr = mirr
return if animation == @_loop_animation
dispose_loop_animation
@_loop_animation = animation
return if @_loop_animation == nil
@_loop_animation_index = 0
animation_name = @_loop_animation.animation_name
animation_hue = @_loop_animation.animation_hue
bitmap = RPG::Cache.animation(animation_name, animation_hue)
if @@_reference_count.include?(bitmap)
@@_reference_count[bitmap] += 1
else
@@_reference_count[bitmap] = 2#b 原来是1 修改不知会造成什么影响这个方法仅测试用 ***************************
end
@_loop_animation_sprites = []
for i in 0..15
sprite = ::Sprite.new(self.viewport)
sprite.bitmap = bitmap
sprite.visible = false
@_loop_animation_sprites.push(sprite)
end
update_loop_animation
end
def animation_set_sprites(sprites, cell_data, position)
for i in 0..15
sprite = sprites[i]
pattern = cell_data[i, 0]
if sprite == nil or pattern == nil or pattern == -1
sprite.visible = false if sprite != nil
next
end
sprite.visible = true
sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
if position == 3
if self.viewport != nil
sprite.x = self.viewport.rect.width / 2
sprite.y = self.viewport.rect.height - 160
else
sprite.x = $Screen_X_2
sprite.y = $Screen_Y_2
end
else
sprite.x = self.x - self.ox + self.src_rect.width / 2
sprite.y = self.y - self.oy + self.src_rect.height / 2
sprite.y -= self.src_rect.height / 4 if position == 0
sprite.y += self.src_rect.height / 4 if position == 2
end
x_是否负 = 0
if @mirr == 0
mirr = false
x_是否负 = 1
elsif @mirr == 1
x_是否负 = -1
mirr = true
end
#p i,cell_data[i] #错误,cell_data p 出来是一个指针
#p cell_data
sprite.x += (cell_data[i, 1] * x_是否负)
sprite.y += cell_data[i, 2]
@zzzz = 1002 if @zzzz == nil#普通动画没有zzz
sprite.z = @zzzz #运用自设Z轴,第三位
sprite.ox = 96
sprite.oy = 96
#sprite.tone=Tone.new(0,@ggreen,@ggreen) #运用自设色调,第二位
#sprite.tone=Tone.new(0,$无敌_2,$无敌_2)
#9/28
#p @ggreen#is_a
if @ggreen != 200 and @ggreen !=nil and @ggreen !=[] #b暂时无时也是
sprite.tone=Tone.new(@ggreen[0],@ggreen[1],@ggreen[2],@ggreen[3])
end
#end #if
# $anime = 11 #b动画
#sprite.zoom_x = cell_data[i, 3] / 100.0
sprite.zoom_x = cell_data[i, 3]*2 / 100.0
sprite.zoom_y = cell_data[i, 3]*2 / 100.0
#sprite.zoom_y = cell_data[i, 3] / 100.0
sprite.angle = cell_data[i, 4]
#cell_data[i, 5] = 1
sprite.mirror = mirr#(cell_data[i, 5] == 1) #true为反向
sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
sprite.blend_type = 0#cell_data[i, 7]
end
end
def get_animationfps #获取最大动画之值
return @_loop_animation.frames.size
end
end #class
end #moudle