time_source_create

此函数将创建新的时间源。请阅读时间源以获得概述。

创建新的时间源不会自动启动它,您必须调用 time_source_start() 以激活它。

新的时间源只运行一次,除非指定了 repetitions 参数(如下所示)。

当您不再需要时,必须使用 time_source_destroy() 销毁时间源

参数

下面是该函数的参数明细:

父时间源父时间源

这是控制新时间源的父时间源。这可能是time_source_globaltime_source_game或已经存在的自定义时间源

请参阅:内置时间源

时期时期

这是一段时间,可以用秒或帧表示,具体取决于下一个参数中指定的单位。

使用帧作为单位时,时期必须是整数。非整数值向下舍入 (浮点),但低于 1 的值除外,这些值向上舍入为 1。

单位单位

这是周期所用的单位,可以是 time_source_units_secondstime_source_units_frames

请参阅:时间源单位

通过使用 time_bpm_to_seconds(),可以使用 "每分钟-毫秒 (BPM)" 值。

回调和参数回调和参数

必须指定在时间源过期时调用的"回调"方法

您可以根据需要指定一个数组,其中包含调用方法时应传递给该方法的参数。

数组本身不会传递到方法中,而是将数组的每个元素作为单独的参数传递。

例如,如果函数需要参数 (x、y、object),则 args 数组可能如下所示:[30,600,obj_player]

重复重复

您可以根据需要指定 时间源 应重复多少次。值 1 表示它只运行一次,这是默认值。

您可以指定它应该重复的总次数,或者指定 -1 使其无限重复。

例如,如果将此设置为 3,并且时间源的周期为 "4 秒",则时间源将总共处于活动状态 12 秒,并且将每 4 秒调用一次回调方法。

过期类型过期类型

这应该是 time_source_expire_nearesttime_source_expire_after

请参阅:时间源过期类型

 

语法:

time_source_create(parent, period, units, callback, [args, repetitions, expiry_type]);

参数类型描述
parentTime Source控制新时间源的父时间源
periodReal时间源运行的时段,以给定单位表示
unitsTime Source Unit Constant给定时段所在的单位
callbackMethod or Script Function时间源过期时要调用的方法或脚本函数
argsArray可选 包含要传递到方法中的参数的数组
repetitionsReal可选 时间源应重复的次数,或 -1 表示无限次重复
expiry_typeTime Source Expiry Constant可选 时间源是在离其过期时间最近的一帧上过期,还是在下一帧上过期。

 

返回:

Time Source

 

示例1:

var _my_method = function()
{
    instance_destroy();
}

time_source = time_source_create(time_source_game, 300, time_source_units_frames, _my_method);

time_source_start(time_source);

在本例中,我们希望实例在 300 帧后自行销毁。

代码首先创建一个只调用 instance_destroy() 的方法。

然后创建时间源,从游戏时间源继承。它将其周期设置为 300 帧

最后,它启动时间源

Make sure to destroy the Time Source when you no longer need it, using time_source_destroy, e.g. in the Room End event.

 

示例2:

var _my_method = function()
{
    show_debug_message("A second has passed!");
}

global.time_per_second = time_source_create(time_source_game, 1, time_source_units_seconds, _my_method, [], -1, time_source_expire_after);

time_source_start(global.time_per_second);

在此示例中,我们正在创建一个每秒过期一次的全局时间源。此代码将放置在脚本的根目录下。

代码首先创建一个将消息打印到输出日志的方法,输出 "A second has passed!"

然后创建新的时间源,从游戏时间源继承。它将其周期设置为 1 秒

该方法已传递到时间源,因此每次过期时都可以调用该方法。为参数指定了一个空数组。

重复计数设置为 -1,因此时间源从不停止并永远重复。其过期类型已设置,因此回调将在过期后的第一个帧上运行。

最后,启动时间源