2011-01-05 3 views
4

Ich versuche, einen Bildschirm Flash-Effekt in einer Mac-Kakao-Anwendung ähnlich der Photo Booth zu replizieren.Replicate Photo Booth Screen Flash in Kakao

Eine weiße Schicht überlagert den Bildschirm und die Helligkeit des Bildschirms verblasst wirklich hell und dann wieder herunter.

Kann mir jemand einen Rat geben, wie dies in Kakao repliziert werden kann?

Dank

Antwort

1

Sie könnten ein Vollbild-Fenster zum Erstellen Sie einen Blick auf this Tutorial nehmen. Mach es einfach weiß und benutze Core Animation, um es ein- und auszublenden. Zum Beispiel: [[MyFullScreenWindow animator] setAlphaValue:0.0]; wird ausgeblendet.

6

Ich empfehle die Verwendung der CGDisplayFade API von Quartz Display Services. Es ist sehr einfach zu bedienen und kein "hacken" mit gefälschten Vollbild-Fenstern oder Ansichten ist erforderlich.

Siehe hier: Quartz Display Services Reference

Eine einfache Implementierung würde wie folgt aussehen:

-(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); 

}