Добрый день!
Я пытаюсь освоить cocos2dx, пытаюсь на c++. Я новичок и в том и в том.
Я хочу собрать несколько действий - движение+анимация персонажа одновременно, плюс callback в в конце цепочки. Как то так -Sequence m_seq= Sequence (spawn(animate,moveto),moveDone,null); указатель на цепочку действий сохраняю как член класса, что бы потом вызвать в onkeypresse (); В inite все работает, а в keypress приходит пустой список , в чем я тут не прав ? Спасибо!
helloworld.h
{
Animation * animWalk; //спрайты
Animate* actAnimWalk; //1е действие (a1)
Sprite *mouse; //спрайт
MoveBy* actMove; //2е действие (a2)
CallFuncN* actMoveDone; //3е действие (a3)
Sequence *walkRight, *walkLeft; //цепочка
}
bool HelloWorld::init()
{ //...выше была загрузка спайтов в animWalk
actMoveDone=CallFuncN::create(CC_CALLBACK_1(HelloWorld::spriteMoveFinished,this)); //init a3
actAnimWalk=Animate::create(animWalk); //init a1
actMove = MoveBy::create (0.9f , Point (-20,0)); //init a2
Spawn * actAnimWalkMove = Spawn::create(actAnimWalk,actMove,NULL); // сохраняем а1 и а2 как параллельные действия и а3 как последовательное(а3 сточкой ниже).
walkLeft= Sequence::create(actAnimWalkMove,actMoveDone,NULL); .сохраняем всю цепочку.
//тут работает.
mouse->runAction(walkLeft); //вызываем цепочку.
}
void HelloWorld::onKeyPressed (EventKeyboard::KeyCode keyCode,Event* event)
{
if (KeyCode==KeyCode::KEY_A)
mouse->runAction(walkLeft); // тут нет. в walkLeft список nullptrов.
}
p.s. Нашел в чем дело - надо делать walkLeft->retain(); иначе он по выходу из инита autoreleasedся
а как теперь прибить тему ?