Я использую CCScrollLayer и хочу подготовить изображения, когда игрок выбирает этапы. Это просто, но когда я прокручиваю этапы, это требует времени (задержка загрузки изображений).
поэтому я решил использовать NSThread. и я получил сообщение "cocos2d: CCSpriteFrameCache: Попытка использовать файл 'Level3.png' в качестве текстуры" от cocos2d. тогда это должно появиться. но эти изображения, загруженные в нить, не отображаются так, как я хочу. просто ничего.
-(void) moveToStagePage:(int)page
{
...
[NSThread detachNewThreadSelector:@selector(prepareTexture:) toTarget:self withObject:[NSNumber numberWithInt:page]];
...
}
ниже исходного кода находится код, который готовит изображения. (Тема)
-(void) prepareTexture:(NSNumber*)number
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int _page = [number intValue];
NSLog(@"%d Thread start", _page);
if(loadingTexNum != 0 && (_page + 1) != loadingTexNum)
{
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:[NSString stringWithFormat:@"Level%d.plist", loadingTexNum]];
loadingTexNum = _page + 1;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"Level%d.plist", loadingTexNum]];
}
if(loadingTexNum == 0 && (_page + 1) != loadingTexNum)
{
loadingTexNum = _page + 1;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"Level%d.plist", loadingTexNum]];
}
[NSThread sleepForTimeInterval:10.0];
NSLog(@"%d Thread release", _page);
[pool release];
}