此函数返回结构,其中包含动画曲线资源或结构中指定的通道的通道数据(由 animcurve_get 返回)。
您提供动画曲线ID或结构以及通道名称或索引,该函数将返回以下格式的结构:
变量名 | 数据类型 | 描述 |
---|---|---|
name | String | 这是频道的名称。 |
type | Animation Curve Interpolation Type Constant | 这将是用于点之间的线性插值的常数animcurvetype_linear,animcurvetype_catmullrom用于使用catmull- rom插值的点之间的 “平滑” 插值,或animcurvetype_bezier用于Bezier插值。 |
iterations | Real | 如果通道使用catmull- rom (“平滑”) 插值,则可以保存为曲线的每段生成了多少个点 (请注意,这些额外的点在函数内部,仅用于运行时计算)。如果通道使用线性插值,则该值仍将存在,但可以忽略,因为它与曲线的插值方式无关。 |
points | Array pointer | 这是一个数组,其中数组中的每个项目都是一个点结构。 |
第一个必需的参数是在资源浏览器中定义的动画曲线,或者是函数animcurve_create()返回的结构指针。
第二个必需参数是一个字符串,它引用了动画曲线资源中定义的通道,或者您可以提供一个索引值,该值从0到n, 其中n是曲线资源中的最后一个通道 (例如: 如果一个动画曲线有4个通道,它们将从0到3索引)。
请注意,传递索引值将比传递通道名称需要更少的处理。如果函数失败 (即: 没有给定名称或索引的通道存在),则会出现错误。
返回的结构的points成员包含一个数组,该数组包含通道的所有点作为结构。
单点结构具有以下变量:
变量名 | 数据类型 | 描述 |
---|---|---|
posx | Real | 点的时间位置 (从0到1归一化)。 |
value | Real | 点的值。 |
points成员仅允许您获取和设置数组变量。您不能在points数组上运行来修改它。
要修改points数组,请将其存储在变量中,该变量将创建一个副本。然后使用数组函数修改该副本,并将该副本应用回结构中的points成员。
var _points_copy = channel_struct.points;
array_delete(_points_copy, 0, 1);
channel_struct.points = _points_copy;
animcurve_get_channel(curve_struct_or_id, channel_name_or_index);
参数 | 类型 | 描述 |
---|---|---|
curve_struct_or_id | Animation Curve Struct or Animation Curve Asset | 动画曲线到目标的ID或结构指针 |
channel_name_or_index | String or Real | 通道名称 (字符串) 或通道索引 (整数)。 |
Animation Curve Channel Struct
var _channeldata = animcurve_get_channel(ac_ButtonTween, 0);
var _points = _channeldata.points;
for (var i = 0; i < array_length(_points); ++i;)
{
_points[i].value += 1;
}
上面的代码在曲线资源 “ac_ButtonTween” 中检索通道0的通道结构,然后循环通过通道曲线上的点并将其值相加。