一、FadeIn FadeOut
local
grossini
= cc.Sprite:create(“g.png”)
ret
:addChild(
grossini
,
0
,
2
)
local
b1b
= cc.Sprite:create(
“res/hd/Images/b1.png”
)
b1b
:setPosition(
0
,
0
)
grossini
:addChild(
b1b
)
grossini
:setCascadeOpacityEnabled(
true
)
— 传递到给子节点,使得子节点也可以随父节点渐隐渐现
grossini
:setPosition(
200
,
200
)
local
function
bugMe
(
node
)
node
:stopAllActions()
–node:runAction(cc.ScaleTo:create(2, 2))
— local outFade = cc.FadeOut:create(2)
— local reoutFade = outFade:reverse()
— node:runAction(cc.Sequence:create(inFade,reinFade))
end
grossini
:setOpacity(
0
)
–fadein必加这句否则不显示效果,FadeOut 不用加
local
inFade
= cc.FadeIn:create(
2
)
local
reinFade
=
inFade
:reverse()
grossini
:runAction( cc.RepeatForever:create(cc.Sequence:create(
inFade
,
reinFade
)))
二 、ActionManager
local
function
unpause
(
dt
)
scheduler
:unscheduleScriptEntry(
schedulerEntry
)
schedulerEntry
=
nil
local
node
=
ret
:getChildByTag(
kTagGrossini
)
local
pDirector
= cc.Director:getInstance()
pDirector
:getActionManager():resumeTarget(
node
) — 重启目标动作 pauseTartget 和resumeTarget用法相似
end
local
function
onNodeEvent
(
event
)
if
event
==
“enter”
then
local
s
= cc.Director:getInstance():getWinSize()
local
sprite
= cc.Sprite:create(“hello.png”)
ret
:addChild(
sprite
,
0
,
2
)
grossini
:setPosition(cc.p(
200
,
200
))
local
action
= cc.MoveBy:create(
1
, cc.p(
150
,
0
))
local
pDirector
= cc.Director:getInstance()
pDirector
:getActionManager():addAction(
action
,
grossini
,
true
)
— 参数 1 动作 2 对象 3 是否暂停
schedulerEntry
=
scheduler
:scheduleScriptFunc(
unpause
,
3.0
,
false
)
–参数1 作用函数 2 时间 3 是否暂停 时间调用注册
elseif
event
==
“exit”
then
if
schedulerEntry
~=
nil
then
scheduler
:unscheduleScriptEntry(
schedulerEntry
) 结束时间调度
end
end
ActionManager 的一些api
local
pDirector
= cc.Director:getInstance()
local
test
=
pDirector
:getActionManager()
test
:removeAction(action)
–删除传入动作
test
:
removeAllActionsFromTarget
(node)
–为指定目标伤处所有动作
test
:removeActionByTag(int,node)
–根据标签删除动作
test
:getNumberOfRunningActionsInTarget(node)
–获得目标动作数
test
:pauseAllRunningActions()
–暂停所有动作返回被暂停动作目标集合
test
:removeAllActions()
–删除所有动作
test
:resumeTargets(array)
–重启目标动作组
以下摘抄自
点击打开链接
动作管理类
CCActionManager
是一个管理所有动作的单例,工作原理是:当
CCNode
执行
runAction
时,该函数会
把动作通过动作管理类的
addAction
函数将对象传递给
CCActionManager
的单例,该实例再把这个动作添加到自己的
动作序列中。
动作管理单例通过定时刷新自己的
update
方法,在这个方法中去调用行为序列中每个动作的
step
(暂停的行为不
会
update
),这些
step
方法再根据自身的完成进度去
update
或是结束行为。
实际上是由动作管理单例驱动的每个动作去更新自己的逻辑,而
runAction
方法只是将行为对象添加进
CCActionManager
的待执行队列。当节点被清除或是行为结束时,动作管理类会自动将动作从队列中删除,不需要程
序员的管理。
一般情况下,不需要使用这个单例来管理动作,可以使用
CCNode
类的
stopAction
、
stopActionByTag
和
stopActions
等函数来管理、但是有两种情况需要使用
CCActionManager
类单例: