フォトブースのようなMacのココアアプリケーションでスクリーンフラッシュエフェクトを複製しようとしています。ココアの写真ブース画面のフラッシュを複製する
画面に白いレイヤーがオーバーレイされ、画面の明るさが実際に明るくなってから再び低下します。
誰でも私にこれをココアでどのように複製することができるかアドバイスできますか?
おかげ
フォトブースのようなMacのココアアプリケーションでスクリーンフラッシュエフェクトを複製しようとしています。ココアの写真ブース画面のフラッシュを複製する
画面に白いレイヤーがオーバーレイされ、画面の明るさが実際に明るくなってから再び低下します。
誰でも私にこれをココアでどのように複製することができるかアドバイスできますか?
おかげ
あなたは、フルスクリーンウィンドウを作成するためのthisのチュートリアルを見てみることができます。それを白にしてCore Animationを使用してフェードインとフェードインします。たとえば、[[MyFullScreenWindow animator] setAlphaValue:0.0];
はフェードアウトします。
私は、Quartz Display ServicesのCGDisplayFade APIを使用することをお勧めします。 非常に使いやすく、偽のフルスクリーンのウィンドウやビューでの「ハッキング」は不要です。
はこちらをご覧ください:Quartz Display Services Reference
簡単な実装は次のようになります。
-(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);
}