Например, у меня есть этот 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) ключевые временные стоимости просто говорят сколько времени для использования для этого конкретного ключевого кадра?
По 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.
Попробуйте.
Переместите файл в другой каталог, например тестирование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. Запутанная часть документов указывает на то, что это длительность, когда на самом деле это нормализованный момент времени.
Значение keytimes представляет собой процент от общей длительности. Допустимые значения диапазона от 0 до 1 (от 0% до 100%). Ваша последняя стоимость 1.6 недействительна.
В качестве примера, если ключевой кадр должен произойти 0,8 секунды в анимацию, что ключевое время будет 0,5, учитывая вашу продолжительностью 1,6 секунды.