47 lines
1.1 KiB
Lua
47 lines
1.1 KiB
Lua
|
local SpriteLoaderPool = {}
|
||
|
local SpriteLoader = {}
|
||
|
|
||
|
-- 调用此方法创建一个管理器
|
||
|
function SpriteLoader.New()
|
||
|
-- 判断对象池里有没有
|
||
|
if #SpriteLoaderPool > 0 then
|
||
|
return table.remove(SpriteLoaderPool, 1)
|
||
|
end
|
||
|
-- 没有新建
|
||
|
local o = {}
|
||
|
o.SpriteList = {}
|
||
|
SpriteLoader.__index = SpriteLoader
|
||
|
setmetatable(o, SpriteLoader)
|
||
|
return o
|
||
|
end
|
||
|
|
||
|
function SpriteLoader:LoadSprite(name)
|
||
|
local transName = GetTranslateSpriteName(name)
|
||
|
local sp = resMgr:LoadSpriteAsset(name)
|
||
|
if sp then
|
||
|
if not self.SpriteList[sp.name] then
|
||
|
self.SpriteList[sp.name] = 0
|
||
|
end
|
||
|
-- 每次加载会导致引用计数加2
|
||
|
self.SpriteList[sp.name] = self.SpriteList[sp.name] + 1
|
||
|
return sp
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
-- 根据界面加载的数量卸载相应数量的资源
|
||
|
function SpriteLoader:UnLoadSprite()
|
||
|
for name, count in pairs(self.SpriteList) do
|
||
|
resMgr:UnLoadAsset(name, count)
|
||
|
end
|
||
|
self.SpriteList = {}
|
||
|
-- 回收到对象池
|
||
|
table.insert(SpriteLoaderPool, self)
|
||
|
end
|
||
|
|
||
|
-- 销毁loader
|
||
|
function SpriteLoader:Destroy()
|
||
|
self:UnLoadSprite()
|
||
|
end
|
||
|
|
||
|
return SpriteLoader
|