AudioStreamInteractive¶
继承: AudioStream < Resource < RefCounted < Object
以可交互的形式播放音乐的音频流,包含若干剪辑和一张过渡表。
描述¶
这是一个能够以交互方式播放音乐的音频流,它结合了片段和过渡表。首先必须添加片段,然后通过 add_transition() 方法设置过渡规则。此外,此流还会导出一个属性参数,用于通过 AudioStreamPlayer 或 AudioPlayer 来控制播放。
其使用方法是:先填充多个片段,然后配置过渡表。接着选择要播放的片段,音乐将按照过渡表中定义的相应过渡规则,从当前片段平滑过渡到新片段。
属性¶
|
||
|
方法¶
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) |
get_clip_auto_advance(clip_index: int) const |
|
get_clip_auto_advance_next_clip(clip_index: int) const |
|
get_clip_name(clip_index: int) const |
|
get_clip_stream(clip_index: int) const |
|
get_transition_fade_beats(from_clip: int, to_clip: int) const |
|
get_transition_fade_mode(from_clip: int, to_clip: int) const |
|
get_transition_filler_clip(from_clip: int, to_clip: int) const |
|
get_transition_from_time(from_clip: int, to_clip: int) const |
|
get_transition_list() const |
|
get_transition_to_time(from_clip: int, to_clip: int) const |
|
has_transition(from_clip: int, to_clip: int) const |
|
is_transition_holding_previous(from_clip: int, to_clip: int) const |
|
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 🔗
该常量表示过渡对来源或目标是任何剪辑的情况均适用。
属性说明¶
该交互式播放器中包含的剪辑数量。
初始剪辑的索引号,播放该音频流时会首先播放该剪辑。
方法说明¶
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_clip 和 to_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。