复合动作给了我们很大空间和自由区构造属于复杂的动作以满足需求,同时要求对复合动作的时间逻辑准确把握。尤其是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。多个精灵执行同样的动作也需要构造多个动作对象,分别跟每个精灵绑定。可以先声明一个动作指针,用指针多次构造动作,就不用声明多个变量。