我正在製作滑塊拼圖,此功能應移動拼貼,然後返回到主要功能以便繼續播放,我也可以使用此功能來隨機播放在遊戲開始的時候,當我稱之爲所有的瓷磚移動到其他地方並進入錯誤的地點或離開屏幕時,這是因爲不是運行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