0

在我执行包含 CCSequence 动作的 RunAction 之前,我怎么能不继续游戏流程。在跑

while(!bEndSequence)
{
    .. stop app form continue ... 
}

并且在 CCSequence 中,最后一个动作将触发 bEndSequence 为真或假,这是唯一的方法吗?

4

1 回答 1

2

Cocos2d-x 不是多线程的,因此 while 循环(例如您给出的示例)不仅会阻止进度,还会冻结游戏。相反,您可以做的是创建一个回调函数来触发您想要执行的其余操作,例如:

void MyClass::waitToExecute()
{
   //code that you want to delay until after the sequence goes here
}

然后,您可以简单地将该回调添加到序列的末尾作为另一个要执行的操作。

runAction(CCSequence::create( CCFadeIn::create(TRANSITIONSPEED*1.1f),CCDelayTime::create(TRANSITIONSPEED*0.5), CCFadeOut::create(TRANSITIONSPEED*2.4f), CCCallFunc::create(this, callfunc_selector(MyClass::waitToExecute)), NULL));

当然,这真的取决于你的代码是如何工作的,所以我无法客观地说这是最好的方法。但在很多情况下,这将工作得很好。

于 2013-09-12T16:17:50.490 回答