|
#encoding:UTF-8
#==============================================================================
# M3L::Sprite : Usage = ::Sprite
# * only for VA
# * add cache to speed up slightly (and very useful for partical effect)
#==============================================================================
# save original Sprite
RGSS_Sprite = ::Sprite
# cache the sprites
SpriteCache = []
class << SpriteCache
alias fix_clear clear
def clear
each { |e| e.dispose }
fix_clear
end
end
class Color
Empty = new 0, 0, 0, 0
end
class Tone
Empty = new 0, 0, 0, 0
end
module M3L
class Sprite
def initialize vip = nil
if SpriteCache.empty?
@_spr = RGSS_Sprite.new vip
else
@_spr = SpriteCache.pop
@_spr.visible = true
@_spr.viewport = vip
end
@_disposed = false
end
def dispose
return if disposed? or SpriteCache.include? @_spr
@_spr.bitmap = nil
@_spr.viewport = nil
@_spr.color = Color::Empty
@_spr.tone = Tone::Empty
@_spr.opacity = 255
@_spr.visible = false
SpriteCache.push @_spr
@_disposed = true
end
def update
raise RGSSError, "disposed sprite" if disposed?
@_spr.update
end
def disposed?
@_disposed
end
def method_missing meth, *args
@_spr.send meth, *args
end
end
end
# replace original Sprite
Sprite = M3L::Sprite
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-5-4 23:50
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.