Какое значение является keyTime в CAKeyFrameAnimation?

Например, у меня есть этот CAKeyFrameAnimation:

CALayer* theLayer = myView.layer;
    CAKeyframeAnimation* animation;
    animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];

    animation.duration = 1.6;
    //animation.cumulative = YES;
    animation.repeatCount = 1;
    animation.removedOnCompletion = NO;
    animation.fillMode = kCAFillModeForwards;

    animation.values = [NSArray arrayWithObjects:
                        [NSNumber numberWithFloat:0.0 * M_PI],
                        [NSNumber numberWithFloat:(15.0/180.0) * M_PI],
                        [NSNumber numberWithFloat:(30.0/180.0) * M_PI], // animation stops here...
                        [NSNumber numberWithFloat:(45.0/180.0) * M_PI], // ignored!
                        [NSNumber numberWithFloat:(190.0/180.0) * M_PI], nil]; // ignored!

    animation.keyTimes = [NSArray arrayWithObjects:
                          [NSNumber numberWithFloat:0.0],
                          [NSNumber numberWithFloat:0.2],
                          [NSNumber numberWithFloat:0.4], // ignored!
                          [NSNumber numberWithFloat:0.8], // ignored!
                          [NSNumber numberWithFloat:1.6], nil]; // ignored!

    animation.timingFunctions = [NSArray arrayWithObjects:
                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear], 
                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
                                 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear], nil];

    [theLayer addAnimation:animation forKey:@"transform.rotation.z"];

То, что я не получаю:

A) являются ключевые временные стоимости абсолютным переданным временем, так как анимация запустилась?

B) ключевые временные стоимости просто говорят сколько времени для использования для этого конкретного ключевого кадра?

8
задан openfrog 2 February 2010 в 14:40
поделиться

2 ответа

По RFC 3986 :

Унифицированный идентификатор ресурса (URI): компактная последовательность символов, идентифицирует абстрактный или физический ресурс.

Основные синтаксические компоненты, определенные RFC:

The generic URI syntax consists of a hierarchical sequence of
components referred to as the scheme, authority, path, query, and
fragment.

  URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

  hier-part   = "//" authority path-abempty
              / path-absolute
              / path-rootless
              / path-empty

Итак - адрес электронной почты не является URI. Однако mailto: You@server.com является допустимым URI.

-121--1599518-

Попробуйте.

Переместите файл в другой каталог, например тестирование2 .

Это должно быть результатом.

/home/user/Desktop/testing/
/home/user/Desktop/testing/testing2/

Я думаю, что getcwd используется для операций с файлами, где dirname (__FILE__) использует магическую константу _ _ FILE _ _ и использует фактический путь к файлу.


Изменить: я был не прав.

Рабочий каталог можно изменить с помощью chdir .

Так что если вы это сделаете...

chdir('something');
echo getcwd()."\n";
echo dirname(__FILE__)."\n";

Они должны отличаться.

-121--1521529-

Документы здесь сформулированы немного странно, но точны:

Каждое значение в массиве является числом с плавающей запятой между 0,0 и 1,0 и соответствует одному элементу в массиве значений. Каждый элемент массива keyTimes определяет длительность соответствующего значения ключевого кадра как долю от общей длительности анимации. Каждое значение элемента должно быть больше или равно предыдущему значению.

В основном каждое значение указывает, в какой нормализованной точке анимации происходит данный ключевой кадр. Так что если ключевой кадр составляет 25% в анимации, значение будет 0,25. Запутанная часть документов указывает на то, что это длительность, когда на самом деле это нормализованный момент времени.

13
ответ дан 5 December 2019 в 10:02
поделиться

Значение keytimes представляет собой процент от общей длительности. Допустимые значения диапазона от 0 до 1 (от 0% до 100%). Ваша последняя стоимость 1.6 недействительна.

В качестве примера, если ключевой кадр должен произойти 0,8 секунды в анимацию, что ключевое время будет 0,5, учитывая вашу продолжительностью 1,6 секунды.

4
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: