2010-07-23 4 views
0

я добавления накладываемых на cocos2d слоя в рамках подготовки к скриншоте ...cocos2d проблема - слой не обновляется достаточно быстро

CGSize winSize = [[CCDirector sharedDirector] winSize]; 

CCScene* currentScene = [[CCDirector sharedDirector] runningScene]; 

GameLayer* topLayer = (GameLayer *)[currentScene.children objectAtIndex:0]; 

CCSprite *middleBackground = [CCSprite spriteWithFile:@"mid_bg.png"]; 
middleBackground.position = ccp(winSize.width * 0.5,winSize.height * 0.55); 
[topLayer addChild:middleBackground z:3 tag:111]; 

CCSprite *bottomBackground = [CCSprite spriteWithFile:@"bot_bg.png"]; 
bottomBackground.position = ccp(winSize.width * 0.5,winSize.height * 0.1); 
[topLayer addChild:bottomBackground z:3 tag:112]; 

CCSprite *topBackground = [CCSprite spriteWithFile:@"top_bg.png"]; 
topBackground.position = ccp(winSize.width * 0.5,winSize.height * 0.94); 
[topLayer addChild:topBackground z:3 tag:113]; 

[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

CCSprite *topBackground2 = [CCSprite spriteWithFile:@"statusCover2.png"]; 
topBackground2.position = ccp(winSize.width * 0.5,winSize.height * 0.992); 
[topLayer addChild:topBackground2 z:3 tag:114]; 

[[topLayer popoverController] dismissPopoverAnimated:YES]; 

затем

[UIImage imageWithCGImage:UIGetScreenImage()]; 

Однако позже не принимает оверлеи в учетную запись. Он снимает снимок экрана перед добавлением оверлеев.

Есть ли в любом случае я могу сказать, что сцена/слой cocos2d обновляет рамку ТЕПЕРЬ?

ответ

0

Поскольку cocos2d является асинхронным, вы не можете сказать ему сделать что-то подобное. Однако вы можете запланировать обратный вызов через две секунды, и этот обратный вызов сделает захват экрана.

[self schedule: @selector(screenshot:) interval:2.0]; 

затем определяют селектор, как это:

-(void) screenshot:(id)sender { 
    [UIImage imageWithCGImage:UIGetScreenImage()]; 
    [self unschedule:@selector(screenshot:)]; 
} 

не забыл запланированную его.

+0

Замечательно, будет ли время интервала согласованным на каждом устройстве? – Carl

+0

Да, он будет постоянным, но временное разрешение не очень высокое в реальной жизни (да, вы можете указать float, но не полагайтесь на него, чтобы быть точным на iOS). –

Смежные вопросы