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(2 , 2),
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( 2, 720),
NULL);
_grossini->runAction(action);
二、通过RepeatForever实现反复运行的动作
auto repeat = RepeatForever::create( RotateBy::create(1.0f, 360) );
sender->runAction(repeat);
三、通过CallFunc能够实现一个函数的调用(也属于Action,这样能够结合Sequence来处理某个Action完毕后的回调)
CallFunc::create( std::bind(&ActionCallFunction::callback2, this, _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的源代码怎样阅读,下一节介绍。