基本样条动作
画基本样条路径:CCCardinalSplineTo和CCCardinalSplineBy的用法
void ActionCardinalSpline::onEnter(){
ActionsDemo::onEnter();
this->centerSprites(2);
CCSize s = CCDirector::sharedDirector()->getWinSize();
CCPointArray *array = CCPointArray::create(20);
array->addControlPoint(ccp(0,0));
array->addControlPoint(ccp(s.width/2-30,0));
array->addControlPoint(ccp(s.width/2-30,s.height-80));
array->addControlPoint(ccp(0,s.height-80));
array->addControlPoint(ccp(0,0));
CCCardinalSplineBy *action = CCCardinalSplineBy::create(3,array,0); //拉力系数
CCActionInterval* reverse = action->reverse();
CCFiniteTimeAction *seq = CCSequence::create(action,reverse,NULL);
m_tamara->setPosition(ccp(50,50));
m_tamara->runAction(seq);
CCCardinalSplineBy* action2 = CCCardinalSplineBy::create(3,array,1);
CCActionInterval* reverse2 = action2->reverse();
CCFiniteTimeAction* seq2 = CCSequence::create(action2,reverse2,NULL);
m_kathia->setPosition(ccp(s.width/2,50));
m_kathia->runAction(seq2);
m_pArray = array;
array->ratain();
}
//CCCardinalSplineBy定义数组时,第一个点最好设置为(0,0),否则起点会被忽略掉,可以重写布景层的draw函数来把路径画出来
CCCatmullRomTo和CCCatmullRomBy的用法:
void ActionCatmullRom::onEnter(){
ActionsDemo::onEnter();
this->centerSprites(2);
CCSize s = CCDirector::sharedDirector()->getWInSize();
m_tamara->setPosition(ccp(50,50));
CCPointArray* array = CCPointArray::create(20);
array->addControlPoint(ccp(0,0));
array->addControlPoint(ccp(80,80));
array->addControlPoint(ccp(s.width-80,80));
array->addCo