一、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类单例: