cocos2d-x中动作类Action的2个常犯…

来源:互联网 发布:nfc软件下载官方网站 编辑:程序博客网 时间:2024/06/09 20:59
   今天在用Action类的时候犯了一个以前犯过的小错误,于是想写出来,以防再犯。
   Action用于操纵精灵在屏幕上的一切动作,包括移动,缩放,旋转,隐藏重现。。。。。。有瞬时动作和持续动作,也可以利用复合动作构造出更多更复杂的动作。虽然自身有一点的局限,但是足以应付大部分我们能想到的操作。当然我们也可以启动精灵的update定时器后重载update函数实现属于自己的动作。这也是Action类的原理。具体的调度原理可以参照《cocos2d-x高级开发教程----制作自己的捕鱼达人》。

    错误一:逻辑不清晰
复合动作给了我们很大空间和自由区构造属于复杂的动作以满足需求,同时要求对复合动作的时间逻辑准确把握。尤其是spawn和sequence的先后顺序,极容易出错。例如一个小球往正方向移动,同时顺时针转到,遇到障碍后反方向移动同时逆时针转动,整个过程中小球慢慢消失。正确的做法是
ccmoveto mt1 = ccmoveto::create(+);
ccrotateto rt1 = ccrotateto(+);
ccspawn sp1 = ccspawn::create(mt1,rt1);
ccmoveto mt2 =ccmoveto::create(-);
ccrotateto rt2 =ccrotateto(-);
ccspawn sp2= ccspawn::create(mt2,rt2);
ccsequence se =ccsequence::create(sp1,sp2);
ccfadeout fa =ccfadeout::create();
ccspawn sp3 = (se,fa);

   错误二:每个动作只能分配绑定一个精灵,而且只能一次。
一个动作对象只能让一个精灵执行一次。一个精灵执行多次同样的动作需要构造多个动作对象,或者用repeat。多个精灵执行同样的动作也需要构造多个动作对象,分别跟每个精灵绑定。可以先声明一个动作指针,用指针多次构造动作,就不用声明多个变量。


0 0