我正在制作滑块拼图,此功能应移动拼贴,然后返回到主要功能以便继续播放,我也可以使用此功能来随机播放在游戏开始的时候,当我称之为所有的瓷砖移动到其他地方并进入错误的地点或离开屏幕时,这是因为不是运行moveTo,而是需要0.2秒,然后在0.2秒后返回,它开始动作并立即返回,所以当再次被调用时,瓷砖仍在移动,将所有东西都搞乱。Cocos2d-x C++ - 在继续之前等待动作完成之前
有没有什么办法阻止代码在动作完成之前继续?感谢;)
bool GameScene::updateTile(Sprite* tile, int newPos)
{
auto moveTo = MoveTo::create(0.2, Vec2(widthArray[newPos], heightArray[newPos]));
auto whatever = CallFunc::create([]() {
CCLOG("hi");
});
auto seq = Sequence::create(moveTo, whatever, nullptr);
tile->runAction(seq);
CCLOG("running");
return true;
}
//编辑
此代码打印: “跑” 和之后0.2秒(时间需要运行动作的moveTo) “HI”(从动作无论)
我的目标是为它等待0.2秒,然后打印“喜”和,只有在此之后,打印“跑”,但如果我尝试使用任何类型的延迟或环 喜欢的停止代码:
bool GameScene::updateTile(Sprite* tile, int newPos)
{
auto moveTo = MoveTo::create(0.2, Vec2(widthArray[newPos], heightArray[newPos]));
auto whatever = CallFunc::create([]() {
CCLOG("hi");
});
auto seq = Sequence::create(moveTo, whatever, nullptr);
tile->runAction(seq);
while (tile->getNumberOfRunningActions != 0)
{ //delay
}
CCLOG("running");
return true;
}
它不运行任何操作,只是卡住了,有什么想法?
的Cocos2D-X是单线程。 while循环将使其陷入困境。使用预定的函数而不是while循环。看我的edit2。 – Zen