cocoa - CoreAnimation 不适用于 QTMovieView 上的 -setAlphaValue

标签 cocoa core-animation

我有一些用于添加 QTMovieView 的基本代码。我希望它淡入,所以我在 setAlphaValue 上添加了一个动画。唯一的问题是它不起作用。 Alpha 值立即设置为它应该设置动画的任何值。如果我尝试制作动画,例如setFrame:它工作正常。您将在下面找到我的代码。这是使用 Mac OS X 10.5 SDK 的 10.5.7。

    - (void)addMovie:(NSString *)aFile
    {
            QTMovieView     *aMovieView;
            QTMovie         *aMovie;
            NSRect          contentFrame;

            contentFrame = [[self contentView] frame];

            aMovieView = [[QTMovieView alloc]
                            initWithFrame:contentFrame];
            [aMovieView setWantsLayer:YES];
            [aMovieView setControllerVisible:NO];
            [aMovieView setPreservesAspectRatio:YES];

            aMovie = [[QTMovie alloc]
                            initWithFile:aFile error:nil];

            [aMovieView setMovie:aMovie];

            [aMovieView setAlphaValue:0.4];

            [[self contentView] addSubview:aMovieView];

            [NSAnimationContext beginGrouping];
            [[NSAnimationContext currentContext] setDuration:2.0];
            [[aMovieView animator] setAlphaValue:0.9];
            [NSAnimationContext endGrouping];

    }

有什么想法吗?

最佳答案

我不确定,但听起来 QTMovieView 可能不支持 Alpha 合成。我尝试的另一项测试是在 QTMovieView 的 super View 上调用 setWantsLayer,看看这是否会影响 QTMovieViews 正确合成的能力。可能行不通。

您可以尝试使用 QTMovieLayer反而。合并 QTMovieLayer 的一种方法是创建您自己的 NSView 子类,该子类创建并管理添加到其根层内的 QTMovieLayer。但请注意,当在同一窗口中将图层支持的 View 与非图层支持的 View 混合时,如果图层支持的 View 并非全部位于前面或位于后面且重叠,您可能会得到有趣的排序。

关于cocoa - CoreAnimation 不适用于 QTMovieView 上的 -setAlphaValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621744/

相关文章:

cocoa - IO蓝牙同步读取

cocoa - 核心动画不适用于 Leopard,适用于 Snow Leopard

objective-c - 如何为导航项目设置动画(闪烁或闪烁之类)

ios7 - SpriteKit SKScene 添加 AVCaptureVideoPreviewLayer CALayer 作为背景不起作用

objective-c - 在 OS X 应用程序中绘制四边形曲线

objective-c - 来自应用程序的 Cocoa Objective-C shell 脚本?

cocoa - 如何在 OS X Lion 中恢复无窗口应用程序 (LSUIElement)

iphone - xcode sqlite3 libsqlite.dylib

macos - CABasicAnimation 过于冗长

swift - 用 SKScene 和 SKActions 替换 CALayer 和 CABasicAnimation