animcurve_get_channel

此函数返回结构,其中包含动画曲线资源或结构中指定的通道的通道数据(由 animcurve_get 返回)。

您提供动画曲线ID或结构以及通道名称或索引,该函数将返回以下格式的结构:

变量名数据类型描述
nameString这是频道的名称。
typeAnimation Curve Interpolation Type Constant这将是用于点之间的线性插值的常数animcurvetype_linearanimcurvetype_catmullrom用于使用catmull- rom插值的点之间的 “平滑” 插值,或animcurvetype_bezier用于Bezier插值。
iterationsReal如果通道使用catmull- rom (“平滑”) 插值,则可以保存为曲线的每段生成了多少个点 (请注意,这些额外的点在函数内部,仅用于运行时计算)。如果通道使用线性插值,则该值仍将存在,但可以忽略,因为它与曲线的插值方式无关。
pointsArray pointer这是一个数组,其中数组中的每个项目都是一个点结构。

第一个必需的参数是在资源浏览器中定义的动画曲线,或者是函数animcurve_create()返回的结构指针。

第二个必需参数是一个字符串,它引用了动画曲线资源中定义的通道,或者您可以提供一个索引值,该值从0到n, 其中n是曲线资源中的最后一个通道 (例如: 如果一个动画曲线有4个通道,它们将从0到3索引)。

请注意,传递索引值将比传递通道名称需要更少的处理。如果函数失败 (即: 没有给定名称或索引的通道存在),则会出现错误。

'points' 数组

返回的结构的points成员包含一个数组,该数组包含通道的所有点作为结构。

单点结构具有以下变量:

变量名数据类型描述
posxReal点的时间位置 (从0到1归一化)。
valueReal点的值。

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_idAnimation Curve Struct or Animation Curve Asset动画曲线到目标的ID或结构指针
channel_name_or_indexString 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的通道结构,然后循环通过通道曲线上的点并将其值相加。