Я пытаюсь интегрировать службу Leaderboard App42 в свою игру Cocos2D-X. Основная функциональность (отправка баллов на сервер и их получение, как показано на сайте App42 ...) работает нормально.Cocos2D-X Layer :: init() застревает при ожидании услуги Leaderboard
Теперь я хочу визуализировать данные своих лидеров с помощью CCTableView.
Таким образом я получил Leaderboard класс (унаследованный от CCLayer) и делаю что-то вроде этого:
bool Leaderboard::init() {
...
// Initialize and send App42 Scoreboard API call
App42API::Initialize(API_KEY, SECRET_KEY);
ScoreBoardService *scoreBoardService = App42API::BuildScoreBoardService();
scoreBoardService->GetTopNRankers(gameName,MAX_SCORES, this,app42callfuncND_selector(Leaderboard::onGetTopNRankings));
// responseArrived is boolean, indicates if onGetTopRankings was called
while(!responseArrived);
CCTableView* tableView = CCTableView::create(this, CCSizeMake(400, 100));
tableView->setDirection(kCCScrollViewDirectionVertical);
tableView->setPosition(winSize.width/3 , winSize.height/2);
tableView->setDelegate(this);
tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
this->addChild(tableView,5);
tableView->reloadData();
return true;
}
void HelloWorld::onGetTopNRankings(App42CallBack *sender, void *response){
App42GameResponse *scoreResponse = (App42GameResponse*)response;
if (scoreResponse->isSuccess)
{
// Save User scores to Array
responseScores = scoreResponse->scores;
}
else
{
printf("\nerrordetails:%s",scoreResponse->errorDetails.c_str());
printf("\nerrorMessage:%s",scoreResponse->errorMessage.c_str());
printf("\nappErrorCode:%d",scoreResponse->appErrorCode);
printf("\nhttpErrorCode:%d",scoreResponse->httpErrorCode);
}
// Response Data is saved, or Error occured, go back to init()
responseArrived = true;
}
Итак, как вы видите, я жду onGetTopNRankings
получить колл, потому что данные по моей TableView бы быть пустым другим. Но происходит то, что я не могу вернуться к init(), когда возвращается onGetTopNRankings
, он застревает.
Итак, у кого-нибудь появилась идея, почему я не могу вернуться к Leaderboard::init()
или у меня есть какая-то хорошая идея решить это каким-либо другим способом, я открыт для каждого предложения?