终极版新手引导

来源:互联网 发布:seo具体怎么做 编辑:程序博客网 时间:2024/04/27 15:20

接触过不少类型的新手引导,最终发现,新手引导嘛,不就是:返回应该引导的区域,然后限制触摸在指定的区域就行了。考虑到屏幕适配等原因,加上使用cocostudio等工具,最终的新手引导应该直接返回引导的节点。这样引导区域之类的就直接确定了。


self:runAction( cc.CallFunc:create( function()        GuideManager:openCommonGuide( self )    end ))-- 实现新手引导的两个代码   -- 获取新手引导的视图Idfunction DrawView:getGuideViewId()    return GuideViewIds.VIEW_LOTTERYend--按照id获取新手引导的节点function DrawView:getGuideNode( guideId )    if     guideId == GuideIds.LOTTERY_VIEW_SILVER then        return {node = self.btn_draw_coin, nil, nil}    elseif guideId == GuideIds.LOTTERY_CLICK_SILVER then        return {node = self.node_draw_coin_down.btn_down_one, nil, nil}    elseif guideId == GuideIds.LOTTERY_CONFIRM_SILVER_SHIP then        if self.draw_result_view then            return {node = self.draw_result_view.shipGetViw.pnl_close, nil, nil} --确认        end    elseif guideId == GuideIds.LOTTERY_CONFIRM_SILVER_RESULT then        if self.draw_result_view then            return {node = self.draw_result_view.btn_ok, nil, nil} --确认        end    elseif guideId == GuideIds.LOTTERY_VIEW_GOLD then        return {node = self.btn_draw_diamond, nil, nil}    elseif guideId == GuideIds.LOTTERY_CLICK_GOLD then        return  {node = self.drawDiamondOneBtn, nil, nil}    elseif guideId == GuideIds.LOTTERY_CONFIRM_GOLD_SHIP then        if self.draw_result_view then            return {node = self.draw_result_view.shipGetViw.pnl_close, nil, nil}--确认        end    elseif guideId == GuideIds.LOTTERY_CONFIRM_GOLD_RESULT then        if self.draw_result_view then            return {node = self.draw_result_view.btn_ok, nil, nil} --确认        end    elseif guideId == GuideIds.LOTTERY_CLICK_BACK then        return {node = UIManager:getTopMenuBackButton(), nil, nil}    end    return {}end-- 新手引导辅助方法结束 function GuideManager:openGuideViewById( view, guideId  )local guide = self:getGuideById( guideId )if guide thenself:openGuideView( view, guide )endend-- 获得Guide字典function GuideManager:getGuideById( guideId )    return DictManager.getGuideDict( guideId )endfunction GuideManager:openGuideView( view, guide, delayTime )    if  guide then    GuideView.getInstance( ):openGuide( view, guide, delayTime )endendfunction GuideView:openGuide( view , guide, delayTime )    self:openTouchLayer( )    self:resetGuideInfo( view, guide, delayTime )    if  self.delayTime > 0 then        self.waitGuideLayer = true        self:runAction( cc.Sequence:create( cc.DelayTime:create( self.delayTime ), cc.CallFunc:create( function()            self:openGuideLayer( )            self.waitGuideLayer = nil        end ) ) )    elseif self.delayTime < 0  then        self:waitForOpenGuide( )    else        self:openGuideLayer( )    endendfunction GuideView:openGuideLayer()    local guide = self.guide    UI.setVisible( self.nodeTouchEffect , false )    UI.setVisible( self.nodeHand , false )    UI.setVisible( self.nodeMessage, false )    UI.setVisible( self.girl , false )    if guide.guid_type == dyt.GuideTypes.Text then        self:openTextGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.Image then        self:openImageGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.Point then        self:openPointGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.Medal then        self:openMedalGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.GetShip then        self:openGetShipGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.BattleImg then        self:openBattleImgGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.ShipSkill then        self:openSkillGuide(guide)    elseif guide.guid_type == dyt.GuideTypes.ChangePos then        self:openChangeFormationGuide(guide)    endendfunction GuideView:openChangeFormationGuide(guide)    local condition_str_list = LuaUtils.Split2( guide.condition_str , "#" )    local shipIdA = tonumber( condition_str_list[1] )    local shipIdB = tonumber( condition_str_list[2] )        self.btnShipA = self.view.moveShipBtnList[ 2 ]    self.btnShipB = self.view.moveShipBtnList[ 1 ]    local positionShipA = UI.worldPosition( self.btnShipA )    local positionShipB = UI.worldPosition( self.btnShipB )        local shipBoxA = self.btnShipA:getBoundingBox()    local shipBoxB = self.btnShipB:getBoundingBox()    local anchorPointA = self.btnShipA:getAnchorPoint()    local anchorPointB = self.btnShipB:getAnchorPoint()    local worldPosA = UI.worldPosition( self.btnShipA )    local worldPosB = UI.worldPosition( self.btnShipB )    self.shipRectA = cc.rect( worldPosA.x - shipBoxA.width*anchorPointA.x , worldPosA.y - shipBoxA.height*anchorPointA.y , shipBoxA.width , shipBoxA.height )    self.shipRectB = cc.rect( worldPosB.x - shipBoxB.width*anchorPointB.x , worldPosB.y - shipBoxB.height*anchorPointB.y , shipBoxB.width , shipBoxB.height )        self.nodeHand:setPosition( positionShipA )    UI.setVisible( self.nodeHand , true )        local action = cc.RepeatForever:create( cc.Sequence:create(        cc.FadeIn:create( 0.2 ),        cc.DelayTime:create( 0.5 ),        cc.MoveTo:create( 0.7 , positionShipB ),        cc.DelayTime:create( 1 ),        cc.FadeOut:create( 0.5 ),        cc.CallFunc:create( function() self.nodeHand:setPosition( positionShipA ) end )    ) )    self.nodeHand:runAction( action )end



0 0
原创粉丝点击