SCNAnimatable
SCNAnimatable протокол определяет интерфейс для присоединения анимаций к узлам, конфигурациям, материалам и другим объектам SceneKit.
SceneKit использует ту же архитектуру в качестве Базовой платформы Анимации, позволяя Вам анимировать изменения свойства неявно или явно. Для неявной анимации используйте SCNTransaction класс для быстрого создания простых анимаций с очень небольшим количеством кода. Для более сложных анимаций явно создайте CAAnimation объекты и использование методы в SCNAnimatable протокол для присоединения их к SceneKit возражает, что Вы хотите анимировать. Вы также используете методы в этом протоколе для управления любыми анимациями, уже присоединенными к объекту SceneKit.
Например, создание узла вращаться постоянно столько, сколько это появляется в графике сцены, требует явно создания повторяющейся анимации. Следующий код создает такую анимацию и присоединяет ее к узлу:
Swift
let rotationAnimation = CABasicAnimation(keyPath: "rotation")// Animate one complete revolution around the node's Y axis.rotationAnimation.toValue = NSValue(SCNVector4: SCNVector4(x: 0, y: 1, z: 0, w: 2 * CGFloat(M_PI)))rotationAnimation.duration = 10.0 // One revolution in ten seconds.rotationAnimation.repeatCount = Float.infinity // Repeat the animation forever.node.addAnimation(rotationAnimation, forKey: nil) // Attach the animation to the node to start it.
Objective C
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"rotation"];// Animate one complete revolution around the node's Y axis.rotationAnimation.toValue = [NSValue valueWithSCNVector4:SCNVector4Make(0, 1, 0, M_PI * 2)];rotationAnimation.duration = 10.0; // One revolution in ten seconds.rotationAnimation.repeatCount = FLT_MAX; // Repeat the animation forever.[node addAnimation:rotationAnimation forKey:nil]; // Attach the animation to the node to start it.
Наследование
Не применимый
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Добавляет объект Animation для указанного ключа. (требуемый)
Объявление
Swift
func addAnimation(_animation: CAAnimation, forKeykey: String?)Objective C
- (void)addAnimation:(CAAnimation *)animationforKey:(NSString *)keyПараметры
animationОбъект Animation, который будет добавлен.
keyСтрока, идентифицирующая анимацию для более позднего извлечения. Можно передать
nilесли Вы не должны ссылаться на анимацию позже.Обсуждение
Недавно добавленные анимации начинают выполняться после того, как текущий цикл цикла выполнения заканчивается.
SceneKit не определяет требований для содержания
keyпараметр — это должно только быть уникальным среди ключей для других анимаций, которые Вы добавляете. Если Вы добавляете анимацию с существующим ключом, этот метод перезаписывает существующую анимацию.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
animationForKey (_:) - animationForKey:ТребуемыйВозвращает анимацию с указанным ключом. (требуемый)
Объявление
Swift
func animationForKey(_key: String) -> CAAnimation?Objective C
- (CAAnimation *)animationForKey:(NSString *)keyПараметры
keyСтрока, идентифицирующая ранее добавленную анимацию.
Возвращаемое значение
Объект Animation, соответствующий ключ, или
nilесли не существует никакая такая анимация.Обсуждение
Попытка изменить любые свойства возвращенного объекта приводит к неопределенному поведению.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
animationKeys () - animationKeysТребуемыйВозвращает массив, содержащий ключи всех анимаций, в настоящее время присоединяемых к объекту. (требуемый)
Возвращаемое значение
Массив, содержащий все ключи, для которых анимации присоединены к объекту или пустому массиву, при отсутствии присоединенных анимаций.
Обсуждение
Упорядочивание анимации вводит возвращенный массив, произвольно.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
removeAllAnimations () - removeAllAnimationsТребуемыйУдаляет все анимации, в настоящее время присоединяемые к объекту. (требуемый)
Объявление
Swift
func removeAllAnimations()Objective C
- (void)removeAllAnimationsОператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Удаляет анимацию, присоединенную к объекту с указанным ключом. (требуемый)
Объявление
Swift
func removeAnimationForKey(_key: String)Objective C
- (void)removeAnimationForKey:(NSString *)keyПараметры
keyСтрока, идентифицирующая присоединенную анимацию для удаления.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Удаляет анимацию, присоединенную к объекту с указанным ключом, гладко переходящим из эффекта анимации. (требуемый)
Объявление
Swift
func removeAnimationForKey(_key: String, fadeOutDurationduration: CGFloat)Параметры
keyСтрока, идентифицирующая присоединенную анимацию для удаления.
durationПродолжительность для перехода из эффекта анимации, прежде чем это будет удалено.
Обсуждение
Используйте этот метод для создания плавных переходов между эффектами многократных анимаций. Например, геометрия, загруженная из файла сцены для игрового символа, возможно, связала анимации для действий проигрывателя, таких как обход и переход. Когда проигрыватель приземляется от перехода, Вы удаляете анимацию перехода, таким образом, символ продолжает идти. Если Вы используете
removeAnimationForKey:метод для удаления анимации перехода SceneKit резко переключается от текущего кадра анимации перехода к текущему кадру анимации обхода. Если Вы используетеremoveAnimationForKey:fadeOutDuration:метод вместо этого, SceneKit играет обе анимации сразу во время той продолжительности и интерполирует позиции вершины от одной анимации до другого, создавая плавный переход.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Приостанавливает анимацию, присоединенную к объекту с указанным ключом. (требуемый)
Объявление
Swift
func pauseAnimationForKey(_key: String)Objective C
- (void)pauseAnimationForKey:(NSString *)keyПараметры
keyСтрока, идентифицирующая присоединенную анимацию.
Обсуждение
Если никакая анимация не присоединена к объекту с указанным ключом, этот метод не имеет никакого эффекта.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Возобновляет ранее приостановленную анимацию, присоединенную к объекту с указанным ключом. (требуемый)
Объявление
Swift
func resumeAnimationForKey(_key: String)Objective C
- (void)resumeAnimationForKey:(NSString *)keyПараметры
keyСтрока, идентифицирующая присоединенную анимацию.
Обсуждение
Этот метод не имеет никакого эффекта, если никакая анимация не присоединена к объекту с указанным ключом или если в настоящее время не приостанавливается указанная анимация.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Возвращает булево значение, указывающее, приостанавливается ли анимация, присоединенная к объекту с указанным ключом. (требуемый)
Объявление
Swift
func isAnimationForKeyPaused(_key: String) -> BoolObjective C
- (BOOL)isAnimationForKeyPaused:(NSString *)keyПараметры
keyСтрока, идентифицирующая присоединенную анимацию.
Возвращаемое значение
YEStrueесли приостанавливается указанная анимация.NOfalseесли анимация работает, или никакая анимация не присоединена к объекту с тем ключом.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
