通过翻牌动画的学习:
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