SCNAction
SCNAction
объект является действием, выполняющимся узлом (SCNNode
). Вы используете действия чаще всего для изменения структуры и содержания узла, к которому они присоединяются, но можно также использовать действия, вносят другие изменения в сцену. В SceneKit действия обеспечивают простой способ реализовать анимированные способы поведения, часто изменяющиеся в ответ на ввод данных пользователем.
Работа с действиями
Для создания действия вызовите метод класса для действия, которым Вы интересуетесь. Затем сконфигурируйте свойства действия. Наконец, для выполнения действия вызовите объект узла runAction:
метод (или похожий метод от SCNActionable
протокол) и передача это объект действия.
Большинство действий позволяет Вам изменять свойства узла, такие как его позиция, вращение или масштаб. Многие из этих действий анимированы SceneKit, означая, что они изменяют свойства связанного узла больше чем по одному кадру анимации, представленной сценой. Когда действие анимировано, duration
свойство утверждает, сколько времени то действие берет для завершения в секундах и timingMode
свойство определяет уровень, на котором выполняется анимация. Действие speed
свойство позволяет Вам корректировать синхронизацию анимации путем увеличения или уменьшения ее скорости воспроизведения.
Много действий могут быть инвертированы, позволив Вам создать другой объект действия, инвертирующий эффект того действия. Например, если объект действия перемещает узел 20
модули в положительном направлении X пространства локальной координаты его родителя, обратное действие перемещает узел 20
модули в отрицательном направлении X. Для создания обратного объекта действия вызовите объект действия reversedAction
метод.
Некоторые действия включают другие действия как дочерние элементы:
Действие последовательности имеет многократные дочерние действия. Каждое действие в последовательности начинается после того, как предыдущее действие заканчивается.
Действия группы имеют многократные дочерние действия. Все действия, сохраненные в группе, начинают выполняться одновременно.
Повторяющееся действие хранит единственное дочернее действие. Когда дочернее действие завершается, оно перезапущено.
Можно вложить группы, последовательности и повторяющиеся действия. Путем объединения действий вместе, можно добавить сложные способы поведения к узлу.
Используя действия для анимации сцены
Действия легко снова используются, могут быть добавлены и удалены при выполнении, и непосредственно влиять на представленные узлы. Когда Ваша сцена часто изменяется в ответ на ввод данных пользователем — такой, создавая игру, по этим причинам действия работают хорошо. Не все элементы сцены могут быть анимированы с помощью действий. Для других видов анимации используйте неявно свойства анимированного объекта (см. SCNTransaction
класс) или явно создаваемые Базовые Объекты Animation (см. SCNAnimatable
протокол), или изменение график сцены непосредственно для каждого представленного кадра (см. SCNSceneRendererDelegate
протокол).
Разделение на подклассы примечаний
Вы никогда не разделяете на подклассы SCNAction
непосредственно. Вместо этого действия по созданию, вызывающие методы на произвольных объектах или выполняющие блоки кода. Посмотрите Пользовательские действия Создания.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, перемещающее узел относительно его текущей позиции.
Объявление
Swift
class func moveByX(_
deltaX
: CGFloat, ydeltaY
: CGFloat, zdeltaZ
: CGFloat, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)moveByX:(CGFloat)
deltaX
y:(CGFloat)deltaY
z:(CGFloat)deltaZ
duration:(NSTimeInterval)duration
Параметры
deltaX
Расстояние для перемещения узла в направление X пространства локальной координаты его родительского узла.
deltaY
Расстояние для перемещения узла в направление Y пространства локальной координаты его родительского узла.
deltaZ
Расстояние для перемещения узла в направление Z пространства локальной координаты его родительского узла.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
position
свойство анимирует от его текущей позиции до его новой позиции.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.moveByX(-deltaX, y: -deltaY, z: -deltaZ, duration: duration)
Objective C
[SCNAction moveByX: -deltaX y: -deltaY z: -deltaZ duration: duration];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, перемещающее узел относительно его текущей позиции.
Объявление
Swift
class func moveBy(_
delta
: SCNVector3, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)moveBy:(SCNVector3)
delta
duration:(NSTimeInterval)duration
Параметры
delta
Вектор, описывающий изменение, которое будет применено к позиции узла.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
position
свойство анимирует от его текущей позиции до его новой позиции.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
let reverseDelta = SCNVector3(x: -delta.x, y: -delta.y, z: -delta.z)
SCNAction.moveBy(reverseDelta, duration: duration)
Objective C
SCNVector3 reverseDelta = SCNVector3Make(-delta.x, -delta.y, -delta.z);
[SCNAction moveBy: reverseDelta duration: duration];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, перемещающее узел в новую позицию.
Объявление
Swift
class func moveTo(_
location
: SCNVector3, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)moveTo:(SCNVector3)
location
duration:(NSTimeInterval)duration
Параметры
location
Координаты для новой позиции узла в пространстве локальной координаты ее родительского узла.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
position
свойство анимирует от его текущей позиции до его новой позиции.Это действие не обратимо; реверс этого действия имеет ту же продолжительность, но не перемещает узел.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, поворачивающее узел в каждой из трех основных осей углами относительно его текущей ориентации.
Объявление
Swift
class func rotateByX(_
xAngle
: CGFloat, yyAngle
: CGFloat, zzAngle
: CGFloat, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)rotateByX:(CGFloat)
xAngle
y:(CGFloat)yAngle
z:(CGFloat)zAngle
duration:(NSTimeInterval)duration
Параметры
xAngle
Сумма для вращения узла против часовой стрелки вокруг оси X его пространства локальной координаты, в радианах.
yAngle
Сумма для вращения узла против часовой стрелки вокруг оси y его пространства локальной координаты, в радианах.
zAngle
Сумма для вращения узла против часовой стрелки вокруг оси z его пространства локальной координаты, в радианах.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
rotation
свойство анимирует к новому углу.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.rotateByX(-xAngle, y: -yAngle, z: -zAngle, duration: sec)
Objective C
[SCNAction rotateByX: -xAngle y: -yAngle z: -zAngle duration: duration];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, поворачивающее узел к абсолютным углам в каждой из трех основных осей.
Объявление
Swift
class func rotateToX(_
xAngle
: CGFloat, yyAngle
: CGFloat, zzAngle
: CGFloat, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)rotateToX:(CGFloat)
xAngle
y:(CGFloat)yAngle
z:(CGFloat)zAngle
duration:(NSTimeInterval)duration
Параметры
xAngle
Сумма для вращения узла против часовой стрелки вокруг оси X его пространства локальной координаты, в радианах.
yAngle
Сумма для вращения узла против часовой стрелки вокруг оси y его пространства локальной координаты, в радианах.
zAngle
Сумма для вращения узла против часовой стрелки вокруг оси z его пространства локальной координаты, в радианах.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
rotation
свойство анимирует к новому углу. Вызов этого метода эквивалентен вызовуrotateToX:y:z:duration:shortestUnitArc:
и передачаNO
false
дляshortestUnitArc
параметр.Это действие не обратимо; реверс этого действия имеет ту же продолжительность, но ничего не изменяет.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, поворачивающее узел к абсолютным углам в каждой из трех основных осей.
Объявление
Swift
class func rotateToX(_
xAngle
: CGFloat, yyAngle
: CGFloat, zzAngle
: CGFloat, durationduration
: NSTimeInterval, shortestUnitArcshortestUnitArc
: Bool) -> SCNActionObjective C
+ (SCNAction *)rotateToX:(CGFloat)
xAngle
y:(CGFloat)yAngle
z:(CGFloat)zAngle
duration:(NSTimeInterval)duration
shortestUnitArc:(BOOL)shortestUnitArc
Параметры
xAngle
Сумма для вращения узла против часовой стрелки вокруг оси X его пространства локальной координаты, в радианах.
yAngle
Сумма для вращения узла против часовой стрелки вокруг оси y его пространства локальной координаты, в радианах.
zAngle
Сумма для вращения узла против часовой стрелки вокруг оси z его пространства локальной координаты, в радианах.
duration
Продолжительность, в секундах, анимации.
shortestUnitArc
Если
NO
false
(значение по умолчанию), анимация интерполирует каждый компонент вращения узла между его текущей стоимостью и новым значением. ЕслиYES
true
, анимация делает самое прямое вращение возможным от текущей ориентации узла до новой ориентации.Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
rotation
свойство анимирует к новому углу.Это действие не обратимо; реверс этого действия имеет ту же продолжительность, но ничего не изменяет.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, поворачивающее узел на угол вокруг указанной оси.
Объявление
Swift
class func rotateByAngle(_
angle
: CGFloat, aroundAxisaxis
: SCNVector3, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)rotateByAngle:(CGFloat)
angle
aroundAxis:(SCNVector3)axis
duration:(NSTimeInterval)duration
Параметры
angle
Сумма для вращения узла против часовой стрелки вокруг указанной оси, в радианах.
axis
Вектор в локальной координате узла располагает с интервалами, чье направление указывает ось вращения.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
rotation
свойство анимирует к новому углу.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.rotateByAngle(-angle, aroundAxis: axis, duration: sec)
Objective C
[SCNAction rotateByAngle: -angle aroundAxis: axis duration: sec];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, поворачивающее узел к абсолютному углу вокруг указанной оси.
Объявление
Swift
class func rotateToAxisAngle(_
axisAngle
: SCNVector4, durationduration
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)rotateToAxisAngle:(SCNVector4)
axisAngle
duration:(NSTimeInterval)duration
Параметры
axisAngle
Четырехкомпонентный вектор, чей сначала три компонента являются вектором в пространстве локальной координаты узла, указывающем ось и чей четвертый компонент является суммой для вращения узла против часовой стрелки вокруг той оси в радианах.
duration
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
rotation
свойство анимирует к новому углу.Это действие не обратимо; реверс этого действия имеет ту же продолжительность, но ничего не изменяет.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, унифицированно изменяющее масштабный коэффициент узла относительным значением.
Объявление
Swift
class func scaleBy(_
scale
: CGFloat, durationsec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)scaleBy:(CGFloat)
scale
duration:(NSTimeInterval)sec
Параметры
scale
Сумма изменения для создания ко всем трем компонентам масштаба узла.
sec
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
scale
свойство анимирует к новому значению.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.scaleBy(-scale, duration: sec)
Objective C
[SCNAction scaleBy: -scale duration: sec];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, унифицированно изменяющее масштабный коэффициент узла к абсолютному значению.
Объявление
Swift
class func scaleTo(_
scale
: CGFloat, durationsec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)scaleTo:(CGFloat)
scale
duration:(NSTimeInterval)sec
Параметры
scale
Новое значение для всех трех компонентов масштаба узла.
sec
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
scale
свойство анимирует к новому значению.Это действие не обратимо; реверс этого действия имеет ту же продолжительность, но ничего не изменяет.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, изменяющее непрозрачность узла к
1.0
.Объявление
Swift
class func fadeInWithDuration(_
sec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)fadeInWithDuration:(NSTimeInterval)
sec
Параметры
sec
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
opacity
свойство анимирует от его текущей стоимости до1.0
.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.fadeOutWithDuration(sec)
Objective C
[SCNAction fadeOutWithDuration: sec];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, изменяющее непрозрачность узла к
0.0
.Объявление
Swift
class func fadeOutWithDuration(_
sec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)fadeOutWithDuration:(NSTimeInterval)
sec
Параметры
sec
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
opacity
свойство анимирует от его текущей стоимости до0.0
.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.fadeInWithDuration(sec)
Objective C
[SCNAction fadeInWithDuration: sec];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, корректирующее непрозрачность узла относительным значением.
Объявление
Swift
class func fadeOpacityBy(_
factor
: CGFloat, durationsec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)fadeOpacityBy:(CGFloat)
factor
duration:(NSTimeInterval)sec
Параметры
factor
Сумма для изменения непрозрачности узла.
sec
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
opacity
свойство анимирует к его новому значению.Это действие обратимо; реверс создается, как будто был выполнен следующий код:
Swift
SCNAction.fadeOpacityBy(-factor, duration: sec)
Objective C
[SCNAction fadeOpacityBy: -factor duration: sec];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, корректирующее непрозрачность узла к новому значению.
Объявление
Swift
class func fadeOpacityTo(_
opacity
: CGFloat, durationsec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)fadeOpacityTo:(CGFloat)
opacity
duration:(NSTimeInterval)sec
Параметры
opacity
Новое значение непрозрачности узла.
sec
Продолжительность, в секундах, анимации.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел
opacity
свойство анимирует к его новому значению.Это действие не обратимо; реверс этого действия имеет ту же продолжительность, но ничего не изменяет.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, удаляющее узел из его родителя.
Объявление
Swift
class func removeFromParentNode() -> SCNAction
Objective C
+ (SCNAction *)removeFromParentNode
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, узел сразу удален из его родителя.
Это действие не обратимо; реверс этого действия является тем же действием.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, выполняющее набор действий параллельно.
Объявление
Swift
class func group(_
actions
: [AnyObject]) -> SCNActionObjective C
+ (SCNAction *)group:(NSArray *)
actions
Параметры
actions
Массив
SCNAction
объекты.Возвращаемое значение
Новый объект действий группы.
Обсуждение
Когда действие выполняется, действия, составляющие группу, которую все сразу запускают и выполняют параллельно. Продолжительность действий группы является самой долгой продолжительностью среди набора действий. Если действие в группе имеет продолжительность меньше, чем продолжительность группы, действие завершается и затем бездействует, пока группа не завершает остающиеся действия. Это имеет значение больше всего при создании повторяющегося действия, повторяющего группу.
Это действие обратимо; это создает новые действия группы, содержащие реверс каждого действия, указанного в группе.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, выполняющее набор действий последовательно.
Объявление
Swift
class func sequence(_
actions
: [AnyObject]) -> SCNActionObjective C
+ (SCNAction *)sequence:(NSArray *)
actions
Параметры
actions
Массив
SCNAction
объекты.Возвращаемое значение
Новый объект действия последовательности.
Обсуждение
Когда действие выполняется, первое действие в последовательности запускается и работает к завершению. Последующие действия в последовательности, выполненной подобным способом до всех действий в последовательности, выполнились. Продолжительность действия последовательности является суммой продолжительностей действий в последовательности.
Это действие обратимо; это создает новое действие последовательности, инвертирующее порядок действий. Каждое действие в обратной последовательности самостоятельно инвертируется. Например, действия
reverseSequence
иsequenceReverse
в примере кода ниже эквивалентны:Swift
let sequence = SCNAction.sequence([actionA, actionB, actionC])
let reverseSequence = SCNAction.sequence([
actionC.reversedAction(),
actionB.reversedAction(),
actionA.reversedAction() ])
let sequeceReverse = sequence.reversedAction()
Objective C
SCNAction *sequence = [SCNAction sequence:@[ actionA, actionB, actionC ]];
SCNAction *reverseSequence = [SCNAction sequence:@[ [actionC reversedAction],
[actionB reversedAction],
[actionA reversedAction] ]];
SCNAction *sequenceReverse = [sequence reversedAction];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, повторяющее другое действие конкретное количество времен.
Объявление
Objective C
+ (SCNAction *)repeatAction:(SCNAction *)
action
count:(NSUInteger)count
Параметры
action
Действие, которое будет выполняться.
count
Число раз для выполнения действия.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, связанные выполнения действия к завершению и затем повторяется, пока количество не достигнуто.
Это действие обратимо; это создает новое действие, которое является реверсом указанного действия и затем повторяет его то же число раз.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, повторяющее другое действие навсегда.
Объявление
Objective C
+ (SCNAction *)repeatActionForever:(SCNAction *)
action
Параметры
action
Действие для выполнения.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, связанные выполнения действия к завершению и затем повторяется.
Это действие обратимо; это создает новое действие, которое является реверсом указанного действия и затем повторяет его навсегда.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, бездействующее в течение установленного периода времени.
Объявление
Swift
class func waitForDuration(_
sec
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)waitForDuration:(NSTimeInterval)
sec
Параметры
sec
Количество времени для ожидания.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, действие ожидает указанного количества времени и затем заканчивается. Это обычно используется в качестве части последовательности действий для вставки задержки между двумя другими действиями. Вы могли бы также использовать его в сочетании с
runAction:completionHandler:
метод для инициирования кода, который должен работать в более позднее время.Это действие не обратимо; реверс этого действия является тем же действием.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, бездействующее в течение рандомизированного промежутка времени.
Объявление
Swift
class func waitForDuration(_
sec
: NSTimeInterval, withRangedurationRange
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)waitForDuration:(NSTimeInterval)
sec
withRange:(NSTimeInterval)durationRange
Параметры
sec
Среднее количество времени для ожидания.
durationRange
Диапазон возможных значений в течение какого-то времени.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, действие ожидает указанного количества времени и затем заканчивается. Это обычно используется в качестве части последовательности действий для вставки задержки между двумя другими действиями. Однако Вы могли бы также использовать его в сочетании с
runAction:completionHandler:
метод для инициирования кода, который должен работать в более позднее время.Каждый раз, когда действие выполняется, действие вычисляет новое случайное значение в течение какого-то времени. Продолжительность может варьироваться по любому направлению до половины значения
durationRange
параметр.Это действие не обратимо; реверс этого действия является тем же действием.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, выполняющее блок.
Объявление
Objective C
+ (SCNAction *)runBlock:(void (^)(SCNNode *node))
block
Параметры
block
Блок для выполнения. Блок берет единственный параметр:
node
Узел, на котором работает действие.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, SceneKit вызывает блок. Это действие имеет место мгновенно.
Это действие не обратимо; обратное действие выполняет тот же блок.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, выполняющее блок на определенной очереди отгрузки.
Объявление
Swift
class func runBlock(_
block
: (SCNNode!) -> Void, queuequeue
: dispatch_queue_t?) -> SCNActionObjective C
+ (SCNAction *)runBlock:(void (^)(SCNNode *node))
block
queue:(dispatch_queue_t)queue
Параметры
block
Блок для выполнения. Блок берет единственный параметр:
node
Узел, на котором работает действие.
queue
Очередь для выполнения действия с.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, SceneKit вызывает блок. Это действие имеет место мгновенно.
Это действие не обратимо; обратное действие выполняет тот же блок.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, периодически выполняющее блок по указанной продолжительности.
Объявление
Swift
class func customActionWithDuration(_
seconds
: NSTimeInterval, actionBlockblock
: (SCNNode!, CGFloat) -> Void) -> SCNActionObjective C
+ (SCNAction *)customActionWithDuration:(NSTimeInterval)
seconds
actionBlock:(void (^)(SCNNode *node, CGFloat elapsedTime))block
Параметры
seconds
Продолжительность действия, в секундах.
block
Блок для выполнения. Блок берет следующие параметры:
node
Узел, на котором работает действие.
elapsedTime
Количество времени, передавшее начиная с действия, начало выполняться.
Возвращаемое значение
Новый объект действия.
Обсуждение
Когда действие выполняется, SceneKit неоднократно вызывает блок, пока не истекает продолжительность действия. Для каждого вызова SceneKit вычисляет прошедшее время и передает его блоку.
Это действие не обратимо; обратное действие выполняет тот же блок.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, периодически выполняющее сценарий JavaScript по указанной продолжительности.
Объявление
Swift
class func javaScriptActionWithScript(_
script
: String, durationseconds
: NSTimeInterval) -> SCNActionObjective C
+ (SCNAction *)javaScriptActionWithScript:(NSString *)
script
duration:(NSTimeInterval)seconds
Параметры
script
Строка, содержащая исходный код JavaScript.
seconds
Продолжительность действия, в секундах.
Возвращаемое значение
Новый объект действия.
Обсуждение
SceneKit представляет свои классы, методы, и функционирует в контексте JavaScript, работающем, сценарий — посмотрите
SCNJavaScript.h
заголовочный файл для подробных данных.Когда действие выполняется, SceneKit неоднократно выполняет сценарий, пока не истекает продолжительность действия. Каждый раз, когда SceneKit выполняет сценарий, он вычисляет прошедшее время, так как действие начало выполняться (как часть продолжительности действия между
0.0
и1.0
) и делает его доступным для сценария как переменная названныйelapsedTime
. Сценарий может также сослатьсяSCNNode
объект, выполняющий действие как переменная, называютnode
.Это действие не обратимо; обратное действие выполняет тот же сценарий.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает действие, инвертирующее поведение другого действия.
Возвращаемое значение
Новое действие, инвертирующее поведение действия.
Обсуждение
Этот метод всегда возвращает объект действия; однако, не все действия обратимы. Когда инвертировано, некоторые действия возвращают объект, или ничего не делающий или выполняющий то же действие как исходное действие. Для получения дополнительной информации о том, как действие инвертируется, посмотрите, что описание метода класса раньше создавало то действие.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
продолжительность продолжительность
СвойствоПродолжительность, требуемая завершать действие.
Объявление
Swift
var duration: NSTimeInterval
Objective C
@property(nonatomic) NSTimeInterval duration
Обсуждение
Это - ожидаемая продолжительность анимации действия. Фактическое время, которое действие занимает для завершения, изменяется действием
speed
свойство.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Фактор скорости, изменяющий, как быстро работает действие.
Обсуждение
Фактор скорости корректируется, как быстро работает анимация действия. Например, фактор скорости
2.0
означает выполнения анимации вдвое более быстро.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
timingMode timingMode
СвойствоРежим синхронизации раньше выполнял действие.
Объявление
Swift
var timingMode: SCNActionTimingMode
Objective C
@property(nonatomic) SCNActionTimingMode timingMode
Обсуждение
Для возможных значений посмотрите
SCNActionTimingMode
. Значение по умолчаниюSCNActionTimingModeLinear
.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
timingFunction timingFunction
СвойствоБлок SceneKit вызывает для определения синхронизации анимации действия.
Объявление
Swift
var timingFunction: SCNActionTimingFunction?
Objective C
@property(nonatomic) SCNActionTimingFunction timingFunction
Обсуждение
timingMode
свойство определяет ввод к Вашему блоку. Вы используете этот ввод для вычислений пользовательской функции синхронизации, вывод которой определяет синхронизацию анимации. Следующий пример обеспечивает квадратичную синхронизацию анимации для действия, моделируя эффект силы тяжести на падающем объекте:Swift
action.timingMode = .Linear
action.timingFunction = { time in
1.0 - time * time
}
Objective C
action.timingMode = SCNActionTimingModeLinear;
action.timingFunction = ^float(float time) {
return 1.0 - time*time;
};
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
Типы данных
-
Подпись для блока, управляющего синхронизацией анимации, используемой
timingFunction
свойство.Объявление
Swift
typealias SCNActionTimingFunction = (Float) -> Float
Objective C
typedef float (^SCNActionTimingFunction)(float time)
Обсуждение
Блок берет единственный параметр:
time
Часть действия входное значение для функции синхронизации, как определено
timingMode
свойство и текущий прогресс действия.Ваш блок должен возвратить значение с плавающей точкой между
0.0
и1.0
, где0.0
представляет начальное состояние анимации действия и1.0
представляет конечное состояние.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Константы, влияющие на кривую анимации действия, используемого
timingMode
свойство.Объявление
Swift
enum SCNActionTimingMode : Int { case Linear case EaseIn case EaseOut case EaseInEaseOut }
Objective C
typedef enum : NSInteger { SCNActionTimingModeLinear, SCNActionTimingModeEaseIn, SCNActionTimingModeEaseOut, SCNActionTimingModeEaseInEaseOut } SCNActionTimingMode
Константы
-
Linear
SCNActionTimingModeLinear
Линейное следование. Анимация развивается равномерно всюду по ее продолжительности.
Доступный в OS X v10.10 и позже.
-
EaseIn
SCNActionTimingModeEaseIn
Простота - в следовании. Анимация медленно начинается, и затем убыстряется, в то время как она развивается.
Доступный в OS X v10.10 и позже.
-
EaseOut
SCNActionTimingModeEaseOut
Следующая простота. Анимация начинается быстро, и затем замедляется, как она завершается.
Доступный в OS X v10.10 и позже.
-
EaseInEaseOut
SCNActionTimingModeEaseInEaseOut
Простота - в следующей простоте. Анимация медленно начинается, ускоряется в течение середины ее продолжительности, и затем замедляется снова перед завершением.
Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-