Tween

Inherits: Node < Object

使节点的属性随时间平滑地变化。

描述

需要让数值属性在一定范围内做插值的动画可以使用 Tween。Tween 这个名字来自动画技术 in-betweening(补间动画):你指定关键帧,而计算机则在关键帧之间插补出其他帧。

TweenAnimationPlayer 更适合于事先不知道最终数值的动画。例如,插值动态选择的相机变焦值最好用 Tween 节点完成;用 AnimationPlayer 节点做同样的事情会很困难。

下面是一个简短的使用例子,让一个 2D 节点在两个位置之间平滑移动:

  1. var tween = get_node("Tween")
  2. tween.interpolate_property($Node2D, "position",
  3. Vector2(0, 0), Vector2(100, 100), 1,
  4. Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
  5. tween.start()

许多方法都需要提供属性名称,比如上面的 "position"。你可以通过在检查器中将鼠标悬停在该属性上找到正确的属性名称。你也可以通过使用 "property:component" 直接提供一个属性的分量(例如 position:x),动画就只会对这个分量起效。

许多方法接受过渡类型 trans_type 和缓动类型 easy_type。前者接受 TransitionType 常量,指的是处理动画时间的方式(请参阅 easings.net 的一些例子)。后者接受 EaseType 常量,控制 trans_type 应用于插值的位置(开头、结尾、或两处都是)。如果你不知道该选哪个过渡和缓动,你可以用 EASE_IN_OUT 尝试不同的 TransitionType 常数,然后使用看起来最好的那个。

Tween 缓动与过渡类型速查表

属性

TweenProcessMode

playback_process_mode

1

float

playback_speed

1.0

bool

repeat

false

方法

bool

follow_method ( Object object, String method, Variant initial_val, Object target, String target_method, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )

bool

follow_property ( Object object, NodePath property, Variant initial_val, Object target, NodePath target_property, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )

float

get_runtime ( ) const

bool

interpolate_callback ( Object object, float duration, String callback, Variant arg1=null, Variant arg2=null, Variant arg3=null, Variant arg4=null, Variant arg5=null )

bool

interpolate_deferred_callback ( Object object, float duration, String callback, Variant arg1=null, Variant arg2=null, Variant arg3=null, Variant arg4=null, Variant arg5=null )

bool

interpolate_method ( Object object, String method, Variant initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )

bool

interpolate_property ( Object object, NodePath property, Variant initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )

bool

is_active ( ) const

bool

remove ( Object object, String key=”” )

bool

remove_all ( )

bool

reset ( Object object, String key=”” )

bool

reset_all ( )

bool

resume ( Object object, String key=”” )

bool

resume_all ( )

bool

seek ( float time )

void

set_active ( bool active )

bool

start ( )

bool

stop ( Object object, String key=”” )

bool

stop_all ( )

bool

targeting_method ( Object object, String method, Object initial, String initial_method, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )

bool

targeting_property ( Object object, NodePath property, Object initial, NodePath initial_val, Variant final_val, float duration, TransitionType trans_type=0, EaseType ease_type=2, float delay=0 )

float

tell ( ) const

信号

  • tween_all_completed ( )

当补间中的所有进程结束时触发。


补间结束时触发。


当补间开始时触发。


动画的每一步都触发。

枚举

enum TweenProcessMode:

  • TWEEN_PROCESS_PHYSICS = 0 —- 补间通过 _physics_process 回调进行更新。

  • TWEEN_PROCESS_IDLE = 1 —- 补间通过_process回调进行更新。


enum TransitionType:

  • TRANS_LINEAR = 0 —- 动画是线性插值的。

  • TRANS_SINE = 1 —- 动画使用正弦函数进行插值。

  • TRANS_QUINT = 2 —- 动画是用五次方,即5的幂函数进行插值的。

  • TRANS_QUART = 3 —- 动画是用一个四次方,即4的幂函数插值的。

  • TRANS_QUAD = 4 —- 动画是用二次方,即2的幂函数插值的。

  • TRANS_EXPO = 5 —- 动画是用一个指数,即x的幂函数插值的。

  • TRANS_ELASTIC = 6 —- 动画弹性插值,在边缘摆动。

  • TRANS_CUBIC = 7 —- 动画是用一个立方,即3的幂函数插值的。

  • TRANS_CIRC = 8 —- 动画使用平方根的函数进行插值。

  • TRANS_BOUNCE = 9 —- 动画通过在末尾弹跳插值。

  • TRANS_BACK = 10 —- 动画在末端回放插值。


enum EaseType:

  • EASE_IN = 0 —- 插值开始缓慢,并加速接近结束。

  • EASE_OUT = 1 —- 插值开始快速,接近结束时减慢。

  • EASE_IN_OUT = 2 —- EASE_INEASE_OUT 的组合。两端的插值最慢。

  • EASE_OUT_IN = 3 —- EASE_IN and EASE_OUT的组合。两端的插值最快。

属性说明

Default

1

Setter

set_tween_process_mode(value)

Getter

get_tween_process_mode()

补间动画处理线程。参阅TweenProcessMode


Default

1.0

Setter

set_speed_scale(value)

Getter

get_speed_scale()

补间的速度乘数。例如,设置为1.0为正常速度,2.0为正常速度的2倍,或者0.5为正常速度的一半。值为0时,动画会暂停,另请参阅set_activestop_all


Default

false

Setter

set_repeat(value)

Getter

is_repeat()

如果true,补间循环。

方法说明

跟随 objectmethod 方法,将其返回值应用于 targettarget_method 方法。从 initial_val 开始,持续时间为 duration 秒,延迟为 delay 秒。方法是用连续的值来调用的。

trans_type 使用 TransitionType 类型的值,对 ease_type 使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。


跟随 objectproperty 属性,将其应用于 targettarget_property 属性。从 initial_val 开始,持续时间为 duration 秒,延迟为 delay 秒。方法是用连续的值来调用的。

trans_type 使用 TransitionType 类型的值,对 ease_type 使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。


  • float get_runtime ( ) const

返回所有补间结束所需的总时间。如果你有两个补间,一个持续 10 秒,另一个 20 秒,它会返回 20 秒,因为到那个时候,所有的补间都会完成。


duration 持续时间后,调用 objectcallback 回调。arg1-arg5 是要传递给回调的参数。


duration 持续时间后,在主线程上调用 objectcallback 回调(类似 Object.call_deferred)。arg1-arg5 是要传递给回调的参数。


objectmethod 方法从起始值 initial_val 动画到最终值 final_val,持续时间为 duration 秒,延迟为 delay 秒。方法是用连续的值来调用的。

trans_type 使用 TransitionType 类型的值,对 ease_type 使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。


objectproperty 属性从起始值 initial_val 动画到最终值 final_val,持续时间为 duration 秒,延迟为 delay 秒。将起始值设置为 null 会使用该属性的当前值。

trans_type 使用 TransitionType 类型的值,对 ease_type 使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。


  • bool is_active ( ) const

如果当前有补间正在运行,则返回 true

注意:这个方法不考虑已经结束的补间。


停止动画并移除补间,指定其对象和属性或方法的对。默认情况下,除非指定key,否则所有的补间都会被移除。


  • bool remove_all ( )

停止动画,并删除所有补间。


将补间重置到它的初始值,即给定的值,而不是补间之前的值,指定其对象和属性或方法的对。默认情况下,除非指定了key,否则所有的补间都被移除。


将所有的补间重置为它们的初始值,即给出的值,而不是补间之前的值。


继续停止的补间制作动画,指定其对象和属性或方法的对。默认情况下,除非指定了key,否则所有的补间都恢复。


  • bool resume_all ( )

继续动画所有停止补间。


设置插值为指定的time,单位秒。


  • void set_active ( bool active )

激活或停用补间。别请参阅stop_allresume_all


开始补间。您可以在此之前和之后定义动画。


停止补间,指定其对象和属性或方法的对。除非指定了 key,默认情况下,所有补间都会停止。


停止动画所有补间。


objectmethod 方法做动画。以 initial_method 方法的返回值作为起始值,最终值为 final_val,持续时间为 duration 秒,延迟为 delay 秒。方法是用连续的值来调用的。

trans_type 使用 TransitionType 类型的值,对 ease_type 使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。


objectproperty 属性做动画。以 initial 对象的 initial_val 属性的当前做作为起始值,最终值为 final_val,持续时间为 duration 秒,延迟为 delay 秒。

trans_type 使用 TransitionType 类型的值,对 ease_type 使用 EaseType 类型的值。这些值控制的是插值的时间和方向。更多信息请参阅类描述。


返回补间的当前时间。