У меня есть экран загрузки, который я инициализирую меткой для отображения последовательности загрузки.
Я хочу вызвать мой DataManager ПОСЛЕ инициализации экрана загрузки, а затем вызвать метод для переключения сцен. Вот мой код:
-(id) init {
if((self=[super init]))
{
loadingLabel = ....
[self addChild:loadingLabel];
/***** This is what I want to call after the init method
//DataManager loads everything needed for the level, and has a reference to the
//loading screen so it can update the label
[[DataManager sharedDataManager] loadLevel:@"level1" screen:self];
//this will switch the scene
[self finishLoading];
*****/
}
return self;
}
-(void) setLoadingPercentage:(int) perc {
//changes the label
}
-(void) finishLoading {
[[CCDirector sharedDirector] replaceScene:[Game node]];
}
Поэтому я не могу вызвать менеджер данных в init, потому что метка не будет обновляться при загрузке контента, и я не могу переключать сцены в методе init. Итак, как мне запустить мой datamanger и завершить загрузку ПОСЛЕ инициализации? Мой план состоял в том, чтобы установить расписание с интервалом в 1 секунду, что делает это, но кажется неправильным ждать секунду.
РЕДАКТИРОВАТЬ: еще один способ, которым я мог бы сделать это, это планировать на каждом кадре и спрашивать диспетчер данных, где он в ... Это уже лучше, так как диспетчеру данных не нужна ссылка на экран загрузки.
Есть идеи?