codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
--图片异步加载 ImageAsync=class("ImageAsync",function() return cc.Layer:create() end) ImageAsync.ctor=function(self) self.size=cc.Director:getInstance():getWinSize() self:initTexture() self:loadingLabel() self.curIndex=0 --当前loaded的图片编号 self:registerScriptHandler(function(tag) if tag=="enter" then --设置定时器 self:scheduleUpdateWithPriorityLua(function(dt) self:loadTexture() end,0) elseif tag=="exit" then cclog("exit") self:unscheduleUpdate() cc.Director:getInstance():getTextureCache():removeAllTextures() end end) end --初始化loadding label ImageAsync.loadingLabel=function(self) local label=cc.Label:createWithTTF("Loading...0%", "res/fonts/arial.ttf", 32) label:setPosition(self.size.width/2,self.size.height/4) self:addChild(label) self.label=label end --初始化图片集 ImageAsync.initTexture=function(self) self.textures={} for i=0,7 do for j=0,7 do local image=string.format("Images/sprites_test/sprite-%d-%d.png",i,j) table.insert(self.textures,image) end end end --异步加载图片 ImageAsync.loadTexture=function(self) local function loadedImage(texture) local sprite=cc.Sprite:createWithTexture(texture) sprite:setPosition(cc.p(self.size.width/2,self.size.height/2)) sprite:setScale(2) self:addChild(sprite) self.curIndex=self.curIndex+1 self.label:setString(string.format("Loading...%d%%",math.floor(100*self.curIndex/#self.textures))) cclog(string.format("loaded self.textures[%d]:%s",self.curIndex,self.textures[self.curIndex])) end local textureCache=cc.Director:getInstance():getTextureCache() for i=1,#self.textures do textureCache:addImageAsync(self.textures[i],loadedImage) end self:unscheduleUpdate() end ImageAsync.create=function() local layer=ImageAsync.new() return layer end return ImageAsync
Private
[
?
]
Run code
Submit