cocos2d-x lua 帧动画

cocos2d-x技术群新群:117871561
c++技术交流群:593010226

1,为了在游戏中流畅的播放帧动画 在进入场景时先缓存动画帧 。当播放动画时 就不用每次都要重新加载动画帧 了,但是要在退出场景时要remove掉,减少内存消耗

--注册layer的 进入 退出事件
--进入场景时触发此函数
    local function onNodeEvent(event)
        if event == "exit" then
            self:onExit()
        elseif event == "enter" then
            self:onEnter()
        end
    end
    self:registerScriptHandler(onNodeEvent)

--在进入场景时缓存动画帧
function GameViewLayer:onEnter()
    print("... GameViewLayer:onEnter ...")
    for i=0,5 do
        local name = string.format("operate_action/buhua_%d.png",i)
        local sp = cc.Sprite:create(name)
        cc.SpriteFrameCache:getInstance():addSpriteFrame(sp:getSpriteFrame(),name)
    end
end


--播放动画帧
function GameViewLayer:showBuxi(viewId)
     local frames = {}
  --读取缓存帧到 frames
    for i=1,5 do
        local name = string.format("operate_action/buhua_%d.png",i)
        frames[i] = 
        cc.SpriteFrameCache:getInstance():getSpriteFrame(name)
    end
          --创建Animation (帧table,播放间隔 )
    local animation = cc.Animation:createWithSpriteFrames(frames, 0.06)
          --创建Animate
    local animate = cc.Animate:create(animation)        
        display.newSprite(animation[1])
        :move(0, 90)
        :runAction(animate)
end
  -- 退出场景时删除动画缓存帧
function GameViewLayer:onExit()
    print("GameViewLayer onExit")
  
    for i=0,5 do
        local name = string.format("operate_action/buhua_%d.png",i)
        cc.SpriteFrameCache:getInstance():removeSpriteFrameByName(name)
    end

end


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

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,505评论 4 61
  • 前言 我选择开发一个游戏有很多原因。我觉得自己是“核心”玩家,过去的大部分时间我都花在玩游戏,自己制作、阅读和游戏...
    月影檀香阅读 14,198评论 1 27
  • 在我小的时候,最喜欢去我姥爷家(“外公”这称呼成了方言了),因为家里一个月才才买一顿肉,而去姥爷家经常能吃上好吃的...
    Binwu阅读 1,675评论 0 0
  • 文章开头:本文是刘羲发表在产品壹佰的文章(http://www.chanpin100.com/article/10...
    萌丸1014阅读 2,755评论 0 2

友情链接更多精彩内容