Android — Как я могу вызвать / запланировать функцию после завершения действия?

Я работаю над многопользовательской игрой в домино, где устройство выступает в роли хоста и принимает решения для остальных игроков. Пока что это прекрасно работает, когда у всех есть хорошая связь, но как только вы вводите некоторое время ожидания, все становится чертовски хорошо. Одна проблема, с которой я столкнулся, заключается в том, что мне нужно перемещать некоторые спрайты по команде. Когда все сыграют, хост-устройство отправит сообщение, которое сообщает удаленным игрокам, которые выиграли раздачу. После того, как это сообщение отправлено, победитель может сделать следующий ход.

Я перемещаю домино вправо, используя:

void HelloWorld::onChatReceived(AppWarp::chat chatevent)
{
if (chatprefix.compare("_determinewinner_")==0)
{
//chatstring in this case is the playerID who won the hand
MultiPlayerdetermineTrickWinner(atoi(chatstring.c_str()));
}
}

void HelloWorld::MultiPlayerdetermineTrickWinner(int winningplayer)
{
...
for (int i = 0; i <marray_table->count(); ++i)
{
Domino *marray_table_tile = (Domino *)(marray_table->objectAtIndex(i));
CCMoveTo *translate = CCMoveTo::create(0.1f,ccp(pos_x,pos_y));
CCRotateBy *rotleft=CCRotateBy::create(0.1f, 90*int_rotate);
marray_table_tile->runAction(CCSequence::create(translate,rotleft,NULL));
}
...
}

Когда игроки выбирают плитку, я звоню

    CCMoveTo *translate = CCMoveTo::create(0.1f,ccp(pos_x,pos_y));
selectedtile->runAction(CCSequence::create(translate,NULL));
marray_table->addObject(selectedtile);

У меня проблема в том, что бывают времена, когда задержка настолько плохая, что бегущее действие никогда не завершается, и плитки на самом деле не достигают своей конечной позиции. Например, если принимающий игрок выиграл руку и делает ход до того, как другие игроки получили сообщение «определенный победитель». Если не считать того, чтобы все игроки сообщали хосту, когда он может двигаться дальше, как мне запланировать выполнение функции только после того, как все действия будут выполнены?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …