cocos3.0_lua ActionManager 和FadeIn FadeOut

来源:互联网 发布:opc转modbus软件 编辑:程序博客网 时间:2024/05/21 22:49

  一、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 functionbugMe(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


    localfunction 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类的stopActionstopActionByTag
stopActions等函数来管理、但是有两种情况需要使用CCActionManager类单例:

0 0
原创粉丝点击