跳到主要内容

Tween

继承

Node

简要描述

随时间平滑地对节点的属性进行动画处理。

描述

补间对于需要将数值属性插值到一系列值上的动画很有用。 名称 tween 来自 inweenweening ,这是一种动画技术,您可以在其中指定关键帧,然后计算机对出现在它们之间的帧进行插值。

TweenAnimationPlayer更适合用于您事先不知道最终值的动画。 例如,最好使用Tween节点对动态选择的相机缩放值进行插值; 使用AnimationPlayer节点很难做同样的事情。

这是一个简短的用法示例,该示例使2D节点在两个位置之间平滑移动:

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

许多方法都需要属性名称,例如上面的“ position” 您可以将鼠标悬停在检查器中的属性上,以找到正确的属性名称。 您还可以通过使用“ property:component” (例如position:x)直接提供属性的组件,该属性仅适用于该特定组件。

许多方法接受trans_typeease_type。第一个接受TransitionType常量,并指代处理动画定时的方式(有关某些示例,请参见http://easings.net/)。 第二个参数接受EaseType常量,并控制将 trans_type应用于插值的位置(在开头,结尾或同时在这两者中)。 如果您不知道选择哪种过渡和缓动,则可以使用EASE_IN_OUT尝试使用不同的TransitionType常量,并使用看起来最合适的常量。

成员

类型属性名默认值
intplayback_process_mode1
floatplayback_speed1.0
boolrepeatfalse

方法

返回值类型方法名称
boolfollow_method(#method-follow_method)(object: Object, method: String, initial_val: Variant, target: Object, target_method: String, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)
boolfollow_property(object: Object, property: NodePath, initial_val: Variant, target: Object, target_property: NodePath, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)
floatget_runtime() const
boolinterpolate_callback(object: Object, duration: float, callback: String, arg1: Variant = null, arg2: Variant = null, arg3: Variant = null, arg4: Variant = null, arg5: Variant = null)
boolinterpolate_deferred_callback(object: Object, duration: float, callback: String, arg1: Variant = null, arg2: Variant = null, arg3: Variant = null, arg4: Variant = null, arg5: Variant = null)
boolinterpolate_method(#method-interpolate_method)(object: Object, method: String, initial_val: Variant, final_val: Variant, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)
boolinterpolate_property(object: Object, property: NodePath, initial_val: Variant, final_val: Variant, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)
boolis_active() const
boolremove(object: Object, key: String = "")
boolremove_all()
boolreset(object: Object, key: String = "")
boolreset_all()
boolresume(object: Object, key: String = "")
boolresume_all()
boolseek(time: float)
voidset_active(active: bool)
boolstart()
boolstop(object: Object, key: String = "")
boolstop_all()
booltargeting_method(#method-targeting_method)(object: Object, method: String, initial: Object, initial_method: String, final_val: Variant, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)
booltargeting_property(object: Object, property: NodePath, initial: Object, initial_val: NodePath, final_val: Variant, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)
floattell() const

信号

  • **tween_all_completed**

在补间中的所有进程结束时发出。


  • **tween_completed**

补间结束时发出。


  • **tween_started**

补间开始时发出。


  • **tween_step**

在动画的每个步骤发出。


枚举

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_INEASE_OUT的组合。 插值在两端都是最快的。


常量

成员说明

  • int playback_process_mode
Default1
setterset_tween_process_mode(value)
getterget_tween_process_mode
  • float playback_speed
Default1.0
setterset_speed_scale(value)
getterget_speed_scale
  • bool repeat
Defaultfalse
setterset_repeat(value)
getteris_repeat

方法说明

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

遵循objectmethod,并从initial_val [/开始,将返回值应用于 targettarget_method`

TransitionType用于trans_type,将EaseType用于ease_type参数。 这些值控制插值的时间和方向。 有关更多信息,请参见类描述。


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

遵循objectproperty,并从initial_val开始,将其应用于targettarget_property

TransitionType用于trans_type,将EaseType用于ease_type参数。 这些值控制插值的时间和方向。 有关更多信息,请参见类描述。


  • get_runtime get_runtime() const

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


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

duration之后,调用objectcallbackarg1-arg5是要传递给回调的参数。


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

在主线程上的duration之后,调用objectcallback(类似于Object.call_deferred)。


  • interpolate_method interpolate_method(object: Object, method: String, initial_val: Variant, final_val: Variant, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)

initial_valfinal_valobject方法动画持续持续时间秒, 延迟秒后。 用连续值调用方法。

TransitionType用于trans_type,将EaseType用于ease_type参数。这些值控制插值的时间和方向。 有关更多信息,请参见类描述。


  • interpolate_property interpolate_property(object: Object, property: NodePath, initial_val: Variant, final_val: Variant, duration: float, trans_type: int = 0, ease_type: int = 2, delay: float = 0)

initial_valfinal_val对象属性动画,持续时间为duration秒,延迟秒后。 将初始值设置为 null将使用属性的当前值。

TransitionType用于trans_type,将EaseType用于ease_type参数。这些值控制插值的时间和方向。 有关更多信息,请参见类描述。


  • is_active is_active() const

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

注意:此方法不考虑补间结束。


  • remove remove(object: Object, key: String = "")

给定其对象和属性/方法对,停止动画并删除补间。 默认情况下,除非指定key,否则将删除所有补间。


  • remove_all remove_all()

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


  • reset reset(object: Object, key: String = "")

在给定对象和属性/方法对的情况下,将补间重置为其初始值(给定的一个,而不是补间之前的一个)。 默认情况下,除非指定key,否则将删除所有补间。


  • reset_all reset_all()

将所有补间重置为其初始值(给定的初始值,而不是补间之前的初始值)。


  • resume resume(object: Object, key: String = "")

给定对象和属性/方法对,继续为停止的补间设置动画。 默认情况下,所有补间将恢复,除非指定了key


  • resume_all resume_all()

继续为所有停止的补间动画。


  • seek seek(time: float)

将插值设置为以秒为单位的给定time


  • set_active set_active(active: bool)

激活/禁用补间。 另请参见stop_allresume_all


  • start start()

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


  • stop stop(object: Object, key: String = "")

给定其对象和属性/方法对,停止补间。 默认情况下,除非指定key,否则所有补间都将停止。


  • stop_all stop_all()

停止为所有补间设置动画。


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

initial_method返回的值到final_valduration秒内,将object方法动画化 ,延迟秒后。 通过使用连续的值调用方法来使方法具有动画效果。

TransitionType用于trans_type,将EaseType用于ease_type参数。 这些值控制插值的时间和方向。 有关更多信息,请参见类描述。


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

initialinitial_val属性的当前值到final_valobject属性动画 ]持续duration秒,然后延迟delay秒。

TransitionType用于trans_type,将EaseType用于ease_type参数。 这些值控制插值的时间和方向。 有关更多信息,请参见类描述。


  • tell tell() const

返回补间的当前时间。