待学习 异步加载 纹理 addImageAsync

--------------------------------------------------------------------
--
-- TextureAsync
--
--------------------------------------------------------------------

local function TextureAsync()
    local ret = createTestLayer("Texture Async Load",
                                "Textures should load while an animation is being run")
    local m_nImageOffset = 0

    local size =cc.Director:getInstance():getWinSize()

    local label = cc.Label:createWithTTF("Loading...", s_markerFeltFontPath, 32)
    label:setAnchorPoint(cc.p(0.5, 0.5))
    label:setPosition(cc.p( size.width/2, size.height/2))
    ret:addChild(label, 10)

    local  scale = cc.ScaleBy:create(0.3, 2)
    local  scale_back = scale:reverse()
    local  seq = cc.Sequence:create(scale, scale_back)
    label:runAction(cc.RepeatForever:create(seq))

    local function imageLoaded(texture)
        local director = cc.Director:getInstance()

        local sprite = cc.Sprite:createWithTexture(texture)
        sprite:setAnchorPoint(cc.p(0,0))
        ret:addChild(sprite, -1)

        local size = director:getWinSize()
        local i = m_nImageOffset * 32
        sprite:setPosition(cc.p( i % size.width, math.floor((i / size.width)) * 32 ))

        m_nImageOffset = m_nImageOffset + 1
        cclog("Image loaded:...")-- %p", tex)
    end

    local function loadImages(dt)
        local i = 0
        local j = 0
        for i=0, 7 do
            for j=0, 7 do
                local szSpriteName = string.format(
                    "Images/sprites_test/sprite-%d-%d.png", i, j)
                cc.Director:getInstance():getTextureCache():addImageAsync(
                    szSpriteName, imageLoaded)
            end
        end

        cc.Director:getInstance():getTextureCache():addImageAsync("Images/background1.jpg", imageLoaded)
        cc.Director:getInstance():getTextureCache():addImageAsync("Images/background2.jpg", imageLoaded)
        cc.Director:getInstance():getTextureCache():addImageAsync("Images/background.png", imageLoaded)
        cc.Director:getInstance():getTextureCache():addImageAsync("Images/atlastest.png", imageLoaded)
        cc.Director:getInstance():getTextureCache():addImageAsync("Images/grossini_dance_atlas.png",imageLoaded)

        ret:unscheduleUpdate()
    end

    local function onNodeEvent(event)
        if event == "enter" then
            ret:scheduleUpdateWithPriorityLua(loadImages,0)
        elseif event == "exit" then
            ret:unscheduleUpdate()
            cc.Director:getInstance():getTextureCache():removeAllTextures()
        end
    end

    ret:registerScriptHandler(onNodeEvent)
    return ret
end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一.什么是异步加载? 在之前的学习笔记中,爬取的网页是需要手动翻页的网址,但是一些网站是通过自动加载翻页的,如kn...
    郭圭志阅读 9,575评论 0 0
  • 介绍 前文介绍了Bitmap大图的高效加载,如果需要加载的图片来源于网络或本次磁盘或其他非内存地方,这个加载的任务...
    keith666阅读 3,627评论 0 3
  • 笔墨里的时光#15/30 读书:无 很幸运的是参加了海关第二期企业AEO认证培训班,海关培训中心距离太湖很...
    柠檬草LF阅读 2,312评论 2 1
  • 锦州御烧烤是锦州人的品牌,也是亟待保护的传统技艺,数以万记的外地人打着“锦州烧烤”招牌开烧烤店,可从食材、技术、口...
    锦州御烧烤阅读 5,007评论 0 0
  • 10月刚过,朋友圈内不停看到小伙伴们纷纷写起了月总结时,让我来聊聊如何从他人的月总结中学习。无论你看的是鸡汤还是鸡...
    发愤的子非鱼阅读 1,481评论 0 2

友情链接更多精彩内容