我正在开发一款多人多米诺骨牌游戏,其中设备充当主机并为其他玩家做出决定。到目前为止,当每个人都有良好的连接时,它的效果很好,但是一旦你引入了一些延迟,所有事情都会发生。我遇到的一个问题是我需要根据命令移动一些精灵。当每个人都玩过时,主机设备会发出一条消息,告诉赢得胜利的远程玩家。在发送该消息之后,获胜者可以进行下一步。
我使用以下方法将多米诺骨牌移到右边:
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);
我遇到的问题是,有时潜伏期非常糟糕,以至于runaction永远不会完成,并且磁贴实际上并没有达到最终位置。例如,如果主持人赢得了手并且在其他玩家收到了'#34;确定的赢家&#34;之前进行了移动。信息。如果没有让所有玩家告诉主持人什么时候可以继续,那么如何在所有行动完成后安排一个功能?