Я пытаюсь применить к своему приложению эффект замедленного воспроизведения, очень похожий на то, как вы можете замедлить большинство графических эффектов Mac OS, нажав Shift.
В моем приложении используется CoreAnimation, поэтому я подумал, что это не должно быть большим делом: установите скорость
на более медленное значение (например, 0,1
) и верните его на 1
как только я закончу, и я иду.
К сожалению, это неправильный путь. Замедление работает отлично, однако, когда я хочу вернуться к нормальной скорости, оно возобновляется, как если бы скорость была 1
все время. По сути, это означает, что если я удерживал Shift достаточно долго, как только я его отпускаю, анимация мгновенно завершается.
Я нашел страницу Технического контроля качества, на которой объясняется, как приостанавливать и возобновлять анимацию, но я не могу понять это правильно, если речь идет не о полной приостановке анимации. Я определенно не очень хорошо умею копировать время.
Как правильно замедлить, а затем возобновить анимацию с помощью CoreAnimation?
Вот полезный код:
-(void)flagsChanged:(NSEvent *)theEvent
{
CALayer* layer = self.layer;
[CATransaction begin];
CATransaction.disableActions = YES;
layer.speed = (theEvent.modifierFlags & NSShiftKeyMask) ? 0.1 : 1;
[CATransaction commit];
}