Тиражирование фотокабины в какао - PullRequest
4 голосов
/ 05 января 2011

Я пытаюсь воспроизвести эффект экранной вспышки в приложении mac macoa, аналогичном приложению Photo Booth.

Белый слой наложен на экран, яркость экрана становится очень яркой, а затем снова уменьшается.

Кто-нибудь может дать мне несколько советов о том, как это можно воспроизвести в Какао?

Спасибо

Ответы [ 2 ]

6 голосов
/ 08 июля 2013

Я предлагаю использовать CGDisplayFade API Quartz Display Services.Он очень прост в использовании и не требует «взлома» с поддельными полноэкранными окнами или представлениями.

См. Здесь: Справочник по службам Quartz Display

Простая реализация будет выглядетьэто:

-(void)flashScreenUsingFlashColor:(NSColor *)flashColor
                   inDuration:(NSTimeInterval)inDuration
                  outDuration:(NSTimeInterval)outDuration{

CGDisplayFadeReservationToken fadeToken;
NSColor *colorToUse = [flashColor colorUsingColorSpaceName: NSCalibratedRGBColorSpace];

CGError error = CGAcquireDisplayFadeReservation (inDuration + outDuration, &fadeToken);
if (error != kCGErrorSuccess){
    NSLog(@"Error aquiring fade reservation. Will do nothing.");
    return;
}

CGDisplayFade (fadeToken, inDuration, kCGDisplayBlendNormal, kCGDisplayBlendSolidColor, colorToUse.redComponent, colorToUse.greenComponent, colorToUse.blueComponent, true);
CGDisplayFade (fadeToken, outDuration, kCGDisplayBlendSolidColor, kCGDisplayBlendNormal,colorToUse.redComponent, colorToUse.greenComponent, colorToUse.blueComponent, false);

}
1 голос
/ 19 января 2011

Вы можете взглянуть на этот учебник для создания полноэкранного окна. Просто сделайте его белым и используйте Core Animation для постепенного исчезновения. Например: [[MyFullScreenWindow animator] setAlphaValue:0.0]; исчезнет.

...