Action是作用在Node上的逻辑处理,比方让Node移动、旋转、缩放、变色、跳跃、翻转、透明等等。都有相相应的Action

Action怎样在Node上使用

1。

定义Action对象

   如 auto act=MoveTo::create(Point(30,0),1);

2.在Node上运行runAction

    auto sp=Sprite::create("npc.png");

   sp->runAction(act);

这样就实现了在sp这个Node上运行移动到30,0这个坐标的动作。1秒中完毕。

当然也能够通过ActionManager来让某个Node运行某个动作

 auto director = Director::getInstance();  //1获取导演对象

 auto manager=   director->getActionManager();//2获取动作管理器 。他也是单例

void addAction(Action *action, Node *target, bool paused);//3.使用这种方法

在Action处理时候能够通过

 一、Sequence和Swap实现Action的组合

 auto action2 = Sequence::create(

                        ScaleBy::create(22),

                        FadeOut::create(2),

                        CallFunc::create( std::bind(&ActionCallFunction::callback2, this, _tamara) ),

                        NULL);

auto action = Spawn::create(

        JumpBy::create(2, Point(300,0), 50, 4),

        RotateBy::create( 2720),

        NULL);

    _grossini->runAction(action);


二、通过RepeatForever实现反复运行的动作

 auto repeat = RepeatForever::create( RotateBy::create(1.0f, 360) );

   sender->runAction(repeat);

三、通过CallFunc能够实现一个函数的调用(也属于Action,这样能够结合Sequence来处理某个Action完毕后的回调)

 CallFunc::createstd::bind(&ActionCallFunction::callback2this_tamara) )。

这里是Lambda啦,详细怎么使用能够看我的视频。

四、通过reverse能够求一个Action的反向

  auto jump = JumpBy::create(2, Point(300,0), 50, 4);

    auto action = Sequence::create( jump, jump->reverse(), NULL);

    _grossini->runAction(action);

五、通过Animate能够实现动画动作(这是重点。后面会具体讲)

至于主要的Action大家能够查看TestCpp的源代码,话说TestCpp的源代码怎样阅读,下一节介绍。


posted on 2017-04-25 09:56  lxjshuju  阅读(140)  评论(0编辑  收藏  举报