Quick cocos2dx- lua 小白入门 学习一个简单的翻牌动画

通过翻牌动画的学习:

1、如何创建动画执行

2、如何给动画加入回调 事件

3、如何创建多动作同时执行动画,还有顺序执行动画

4.plist资源文件的调用方式

5,节点触摸点击事件的创建



开发工具:Quick-Cocos2dx-Community-3.6.5



--代码

function RubCardScene:ctor()
    cc.ui.UILabel.new({
            UILabelType = 2, text = "Rub, card", size = 64})
        :align(display.CENTER, display.cx, display.cy)
        :addTo(self)
        :setTouchEnabled(true)
        :setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)
        :addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event) --节点点击事件
        -- self:showObtAniUseOrbitCamera()
        -- self:showScaleTo()
        self:startOrbitAction()
        end)
        self:createPoker()--创建扑克
end

function RubCardScene:createPoker()
  --扑克牌正面  
   local pokerFront = display.newSprite("#pdk_101.png")   --提前MyAPP中加载资源就可全局这么调用plist文件中的资源了 
       :align(display.CENTER, display.cx, display.cy)
       :addTo(self,1,123)
       :setVisible(false)


       --扑克牌反面  
  local pokerBack = display.newSprite("#pdk_0.png")    
       :align(display.CENTER, display.cx, display.cy)
       :addTo(self,1,321)
end

--标示动作是否完成 
function RubCardScene:actionIsDownFunc()
      actionIsDone = true  --标示动作是否完成 
end

-- 翻牌动画
function RubCardScene:startOrbitAction()
local pokerFront=self:getChildByTag(123)
local pokerBack=self:getChildByTag(321)
local orbitTime = 1


local callbackFunc = function ()  
    actionIsDone = true
end  
local  callfunc= cc.CallFunc:create(callbackFunc)
if pokerFront:isVisible()==false and actionIsDone==true then
print("背面")   
      actionIsDone = false  --标示动作是否完成 
      --第一个参数是旋转的时间,第二个参数是起始半径,
      --第三个参数半径差,第四个参数是起始Z角,
      --第五个参数是旋转Z角差,
      --第六个参数是起始X角,最后一个参数旋转X角差, 
       action1=cc.Show:create()
       orbitFront = cc.OrbitCamera:create(orbitTime, 1, 0, 270, 90, 0, 0)
       sequenceFront =cc.Sequence:create(action1,orbitFront)
       targetFront = cc.TargetedAction:create(pokerFront, sequenceFront)


       orbitBack = cc.OrbitCamera:create(orbitTime, 1, 0, 0, 90, 0, 0)
       p_action1=cc.Hide:create()
    
       sequence=cc.Sequence:create(orbitBack,p_action1,targetFront,callfunc)
       pokerBack:runAction(sequence)


     elseif pokerFront:isVisible()==true and actionIsDone == true then
      print("扑克反面")   
   actionIsDone = false
       action1=cc.Show:create()
       orbitFront = cc.OrbitCamera:create(orbitTime, 1, 0, 270, 90, 0, 0)
       sequenceFront =cc.Sequence:create(action1,orbitFront)
       targetFront = cc.TargetedAction:create(pokerBack, sequenceFront)


       orbitBack = cc.OrbitCamera:create(orbitTime, 1, 0, 0, 90, 0, 0)
       p_action1=cc.Hide:create()
       --Spawn 事件并列发 
       -- cc.Spawn:create(action1 , action2)
       --Sequence 事件顺序发生
       --CallFunc --动画中加入的回调事件
       sequence=cc.Sequence:create(orbitBack,p_action1,targetFront,callfunc)
       pokerFront:runAction(sequence)
end

end




你可能感兴趣的:(cocos2dx-lua,学习之路)