cocos2dx-lua制作新手引导

cocos2dx-lua制作新手引导

最近在项目中负责制作新手引导,有些想法分享一下。

常见的引导类型有点击和对话(剧情),甚至有些对话(剧情)不归属新手引导的范围,但是下文介绍的时候会涉及到剧情方面。

引导的整体逻辑

我的新手引导连贯性是使用事件派发实现,cocos2dx自带的事件派发是跟Node绑定的,所以你需要去找一个lua的事件派发(当然自己写一个更好)。下面的代码中sgEventDispatcher即为我使用的事件派发工具。

新手引导肯定是跟UI层有关联的,这个无法避免所以一定要设置合理的UI节点保证你引导的位置。我这里UI是使用cocosbuilder来拼接的,lua层解析使用的Viewbase基类。在设计UI时,我会在有引导的ccb中设置一个空的Node,并且命名为ccbNodeTutorial, 然后Viewbase解析的时候,如果检测到该节点就会在该Node的”enterTransitionFinish”事件里注册监听引导的监听函数,然后在”exitTransitionStart”取消注册。

function ViewBase:registerListener() 
    if not tutorialMgr:getTutorialOpenState() then
        return
    end
    self:onNodeEvent("enterTransitionFinish", function()
        if self.ccbNodeTutorial then
            sgEventDispatcher:registerEventListener("sgeNewTutorial", self.onEventAddTutorial, self)
            self:onNodeEvent("exitTransitionStart", self.unregisterListener, self)
            sgEventDispatcher:dispatchEvent("sgeStartTutorial")
        end
    end)
end

function ViewBase:unregisterListener()
    sgEventDispatcher:remove("sgeNewTutorial", self.onEventAddTutorial, self)
end

function ViewBase:onEventAddTutorial(event)
    if not tutorialMgr:checkCanCreateTutorialView(self) then
        return
    end
    app:showSwallowLayer()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值