我正在尝试在我的应用程序中应用慢动作效果,就像在Mac OS上按下Shift键可以减缓大多数图形效果一样。
我的应用程序使用CoreAnimation,所以我认为这应该不是什么大问题:设置`speed`为较慢的值(如`0.1`),完成后将其设置回`1`,然后我就可以开始操作了。
不幸的是,似乎这不是正确的方法。减速效果很好,但当我想恢复正常速度时,它会像速度始终为`1`一样恢复。这基本上意味着如果我按住Shift键足够长的时间,那么一旦释放,动画将立即完成。
我找到了一个技术QA页面,说明了如何暂停和恢复动画,但如果不完全暂停动画,则无法正确执行。我绝对不擅长时间扭曲。
使用CoreAnimation如何正确地减速然后恢复动画?以下是有用的代码:
我的应用程序使用CoreAnimation,所以我认为这应该不是什么大问题:设置`speed`为较慢的值(如`0.1`),完成后将其设置回`1`,然后我就可以开始操作了。
不幸的是,似乎这不是正确的方法。减速效果很好,但当我想恢复正常速度时,它会像速度始终为`1`一样恢复。这基本上意味着如果我按住Shift键足够长的时间,那么一旦释放,动画将立即完成。
我找到了一个技术QA页面,说明了如何暂停和恢复动画,但如果不完全暂停动画,则无法正确执行。我绝对不擅长时间扭曲。
使用CoreAnimation如何正确地减速然后恢复动画?以下是有用的代码:
-(void)flagsChanged:(NSEvent *)theEvent
{
CALayer* layer = self.layer;
[CATransaction begin];
CATransaction.disableActions = YES;
layer.speed = (theEvent.modifierFlags & NSShiftKeyMask) ? 0.1 : 1;
[CATransaction commit];
}