我有一些用于添加 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/