Задать вопрос
@slon_ru

Как сохранить цепочку действий в cocos2dx?

Добрый день!
Я пытаюсь освоить 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ся
а как теперь прибить тему ?
  • Вопрос задан
  • 2755 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Потрудитесь нормально расставить теги исходных кодов. Эту кашу никто читать не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы