AudioStreamInteractive

继承: AudioStream < Resource < RefCounted < Object

以可交互的形式播放音乐的音频流,包含若干剪辑和一张过渡表。

描述

这是一个能够以交互方式播放音乐的音频流,它结合了片段和过渡表。首先必须添加片段,然后通过 add_transition() 方法设置过渡规则。此外,此流还会导出一个属性参数,用于通过 AudioStreamPlayerAudioPlayer 来控制播放。

其使用方法是:先填充多个片段,然后配置过渡表。接着选择要播放的片段,音乐将按照过渡表中定义的相应过渡规则,从当前片段平滑过渡到新片段。

属性

方法

void

add_transition(from_clip: int, to_clip: int, from_time: TransitionFromTime, to_time: TransitionToTime, fade_mode: FadeMode, fade_beats: float, use_filler_clip: bool = false, filler_clip: int = -1, hold_previous: bool = false)

void

erase_transition(from_clip: int, to_clip: int)

AutoAdvanceMode

get_clip_auto_advance(clip_index: int) const

int

get_clip_auto_advance_next_clip(clip_index: int) const

StringName

get_clip_name(clip_index: int) const

AudioStream

get_clip_stream(clip_index: int) const

float

get_transition_fade_beats(from_clip: int, to_clip: int) const

FadeMode

get_transition_fade_mode(from_clip: int, to_clip: int) const

int

get_transition_filler_clip(from_clip: int, to_clip: int) const

TransitionFromTime

get_transition_from_time(from_clip: int, to_clip: int) const

PackedInt32Array

get_transition_list() const

TransitionToTime

get_transition_to_time(from_clip: int, to_clip: int) const

bool

has_transition(from_clip: int, to_clip: int) const

bool

is_transition_holding_previous(from_clip: int, to_clip: int) const

bool

is_transition_using_filler_clip(from_clip: int, to_clip: int) const

void

set_clip_auto_advance(clip_index: int, mode: AutoAdvanceMode)

void

set_clip_auto_advance_next_clip(clip_index: int, auto_advance_next_clip: int)

void

set_clip_name(clip_index: int, name: StringName)

void

set_clip_stream(clip_index: int, stream: AudioStream)


枚举

enum TransitionFromTime: 🔗

TransitionFromTime TRANSITION_FROM_TIME_IMMEDIATE = 0

尽快开始过渡,不等待任何特定的时间位置。

TransitionFromTime TRANSITION_FROM_TIME_NEXT_BEAT = 1

剪辑播放至下一拍时过渡。

TransitionFromTime TRANSITION_FROM_TIME_NEXT_BAR = 2

剪辑播放至下一节时过渡。

TransitionFromTime TRANSITION_FROM_TIME_END = 3

剪辑播放完成时过渡。


enum TransitionToTime: 🔗

TransitionToTime TRANSITION_TO_TIME_SAME_POSITION = 0

过渡至目标剪辑中的相同位置。适用于两个剪辑长度一致、需要进行过渡的场合。

TransitionToTime TRANSITION_TO_TIME_START = 1

过渡至目标剪辑的开头。


enum FadeMode: 🔗

FadeMode FADE_DISABLED = 0

过渡时不使用淡入淡出。适用于从剪辑结尾过渡至剪辑开头,双方均有开头/结尾的情况。

FadeMode FADE_IN = 1

在下一剪辑中使用淡入,播放完当前剪辑。

FadeMode FADE_OUT = 2

在当前剪辑中使用淡出,下一剪辑自行开始。

FadeMode FADE_CROSS = 3

在剪辑之间使用交叉渐变。

FadeMode FADE_AUTOMATIC = 4

使用根据过渡来源和目标决定的过渡逻辑。建议默认使用这个选项。


enum AutoAdvanceMode: 🔗

AutoAdvanceMode AUTO_ADVANCE_DISABLED = 0

禁用自动推进(默认)。

AutoAdvanceMode AUTO_ADVANCE_ENABLED = 1

启用自动推进,必须指定剪辑。

AutoAdvanceMode AUTO_ADVANCE_RETURN_TO_HOLD = 2

启用自动推进,不指定剪辑,而是恢复播放保持的剪辑(见 add_transition())。


常量

CLIP_ANY = -1 🔗

该常量表示过渡对来源或目标是任何剪辑的情况均适用。


属性说明

int clip_count = 0 🔗

  • void set_clip_count(value: int)

  • int get_clip_count()

该交互式播放器中包含的剪辑数量。


int initial_clip = 0 🔗

  • void set_initial_clip(value: int)

  • int get_initial_clip()

初始剪辑的索引号,播放该音频流时会首先播放该剪辑。


方法说明

void add_transition(from_clip: int, to_clip: int, from_time: TransitionFromTime, to_time: TransitionToTime, fade_mode: FadeMode, fade_beats: float, use_filler_clip: bool = false, filler_clip: int = -1, hold_previous: bool = false) 🔗

在两个片段之间添加一个过渡效果。请提供源片段和目标片段的索引,或者使用 CLIP_ANY 常量来表示过渡效果是针对从任何片段到此片段,或者从此片段到任何片段的。

* from_time 表示在当前片段中,触发该过渡后其开始的时刻。

* to_time 表示下一帧中播放将从该时间点开始。

* fade_mode 用于指定片段之间淡入淡出的效果如何实现。如果不确定具体操作方式,可以使用 FADE_AUTOMATIC 因为它会根据不同情况采用最常用的淡入淡出方式。

* fade_beats 表示淡入淡出效果所需的时间(以beats为单位)。允许使用小数。

* use_filler_clip 表示在源片段和目标片段之间会插入一段填充片段。

* filler_clip 填充片段的索引。

* 如果使用 hold_previous 选项,那么此片段将会被保存下来。此功能可与 AUTO_ADVANCE_RETURN_TO_HOLD 选项结合使用,以便在播放完下一个片段后返回到当前片段。


void erase_transition(from_clip: int, to_clip: int) 🔗

擦除过渡,需要提供剪辑索引号 from_clipto_clip。两者均可使用 CLIP_ANY


AutoAdvanceMode get_clip_auto_advance(clip_index: int) const 🔗

返回剪辑是否启用了自动推进。见 set_clip_auto_advance()


int get_clip_auto_advance_next_clip(clip_index: int) const 🔗

返回 clip_index 所引用的剪辑会自动推进至哪个剪辑。


StringName get_clip_name(clip_index: int) const 🔗

返回剪辑的名称。


AudioStream get_clip_stream(clip_index: int) const 🔗

返回与剪辑关联的 AudioStream


float get_transition_fade_beats(from_clip: int, to_clip: int) const 🔗

返回过渡的时间,单位为拍(见 add_transition())。


FadeMode get_transition_fade_mode(from_clip: int, to_clip: int) const 🔗

返回过渡的模式(见 add_transition())。


int get_transition_filler_clip(from_clip: int, to_clip: int) const 🔗

返回过渡的填充剪辑(见 add_transition())。


TransitionFromTime get_transition_from_time(from_clip: int, to_clip: int) const 🔗

返回过渡的来源时间位置(见 add_transition())。


PackedInt32Array get_transition_list() const 🔗

返回过渡列表(来源、目标互相穿插)。


TransitionToTime get_transition_to_time(from_clip: int, to_clip: int) const 🔗

返回过渡的目标时间位置(见 add_transition())。


bool has_transition(from_clip: int, to_clip: int) const 🔗

如果存在给定的过渡则返回 true(通过 add_transition() 添加)。


bool is_transition_holding_previous(from_clip: int, to_clip: int) const 🔗

返回过渡是否使用了保持上一个功能(见 add_transition())。


bool is_transition_using_filler_clip(from_clip: int, to_clip: int) const 🔗

返回过渡是否使用了填充剪辑功能(见 add_transition())。


void set_clip_auto_advance(clip_index: int, mode: AutoAdvanceMode) 🔗

通过更改自动前进模式来设置剪辑是否自动前进。


void set_clip_auto_advance_next_clip(clip_index: int, auto_advance_next_clip: int) 🔗

设置下一个剪辑的索引,此剪辑完成后将自动前进到该索引。如果正在播放的剪辑循环播放,则自动前进将被忽略。


void set_clip_name(clip_index: int, name: StringName) 🔗

设置当前剪辑的名称(方便识别)。


void set_clip_stream(clip_index: int, stream: AudioStream) 🔗

设置与当前剪辑关联的 AudioStream