NSAnimation循环

时间:2011-09-06 13:05:47

标签: cocoa animation loops

我有一个视图,当用户在其上拖动文件时启动动画。动画显示文件的相对图标(在NSAnimation自定义类的NSImageView Ivar中)在衰落时变大。

如果我将动画循环到标准循环中,如:

CustomAnimation *animation = [[CustomAnimation alloc] initWithDuration: 2.0 animationCurve: NSAnimationLinear]

NSimage *icon;

for (NSString *filename in filenames) {
    icon = [[NSWorkspace sharedWorkspace] iconForFile: filename];
    NSImageView *myImageView = [[NSImageView alloc] initWithFrame: theFrame];
    [myImageView setImage: icon];
    [animation setImageView: myImageView];
    [animation startAnimation];
}

循环太快了,动画看起来好像几乎一起被发射(显然)。

您认为循环动画多次控制一个动画开始和后续动画之间的延迟的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以将NSTimer用于此目的。

答案 1 :(得分:0)

您的动画闪现(除了可能是最后一个)的原因是在每次迭代时您都会用新的动画“覆盖”上一个动画。

如果想要让每个动画占据整个2s,那么chaining core animations上的这篇文章应该可以解决问题。您可以在事件中添加动画之间的间隙。

- 编辑 -

@Richard这是我的错,我误解了这个问题。

查看NSAnimation的文档表明您可以使用startWhenAnimation:reachesProgress:链接动画。