
A simple, reusable animation that changes attributes of any node you attach it to.
SCNAction提供一个简单的、可重用的动画,可以更改附加到节点上的属性。
SCNAction类提供了一系列类方法,参见苹果文档,我们可以有选择的通过这些方法创建Actions
,然后配置属性,最后调用节点对象的run(_:)
方法(或SCNActionable
中的类似方法)执行操作。
大多数操作允许您更改节点的属性,例如其位置、旋转或缩放。其中许多操作都是由SceneKit动画生成的,这意味着它们在场景呈现的多个动画帧上更改关联节点的属性。当一个动画进行时,duration
属性声明该动作需要多长时间以秒为单位完成,它的timingMode
属性定义了动画执行的速度。动作的速度属性可以通过增加或减少播放速度来调整动画的时间。
许多操作actions
可以被逆转,可以创建另一个操作action
对象来逆转该操作的效果。例如,如果操作对象将节点20个单元移动到其父节点的本地坐标空间的正X方向,则反向操作将节点20个单元移动到负X方向。要创建反向操作对象,请调用操作对象的reverse()
方法。
有些操作包含子操作:
-
序列操作有多个子操作。序列中的每个操作都在前一个操作结束后开始。
-
一个组操作有多个子操作。组中存储的所有操作同时开始执行。
-
重复操作存储单个子动作。当子操作完成时,将重新启动它。
您可以序列、操作组和重复操作嵌套起来。通过将操作组合在一起,可以向节点添加复杂的行为。
小结
Actions
很容易重用,可以在运行时添加和删除操作,并直接影响呈现的节点。正由于这些原因,当你的场景频繁地根据用户输入而变化时,例如在创建游戏时,使用Actions
就很方便。但也并不是所有的场景元素都可以通过动作Actions
来动画化。对于其他类型的动画,可以使用隐式动画对象属性(参见SCNTransaction类)或显式创建核心动画对象(参见SCNAnimatable协议),或者为每个呈现的帧直接更改scene graph
(参见SCNSceneRendererDelegate协议)。
网友评论