call_later

此函数在指定时间之后或特定时间间隔之后触发回调函数。它通过创建时间源(请参见时间源)来执行此操作。

要取消回调函数,请参阅 call_cancel

重要 虽然此函数返回实际时间源,但它不能与时间源函数一起使用,因为 call_latercall_cancel 使用的时间源是 " 不可见的" - 它们不会出现作为任何内置时间源的子级,不能与其他时间源函数一起使用。不过,它们包含在 debug_event("ResourceCounts") 返回的时间源计数中。

参数

下面是这个函数的参数明细:

时期时期

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

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

单位单位

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

请参阅:时间源单位

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

回调回调

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

循环循环

时间源是否应循环。

 

 

 

 

语法:

call_later(period, unit, callback, [loop=false]);

参数类型描述
periodReal时间源运行的时间段,以给定单位表示
unitsTime Source Unit Constant给定期间所在的单位
callbackMethod or Script Function在指定时间之后要调用的方法或脚本函数
loopBoolean可选 是否循环时间源(默认为 false)

 

返回:

Time Source

 

示例1:

var _callback = function()
{
    show_debug_message("Five seconds have passed!");
}
var _handle = call_later(5, time_source_units_seconds, _callback);

在本例中,我们将创建一个回调函数,该函数显示五秒后的调试消息。之后,下面的时间源被销毁。

示例2:

var _create_enemy = function()
{
    var _x = random(room_width);
    var _y = random(room_height);
    instance_create_depth(_x, _y, depth, obj_enemy);
}

var _handle = call_later(10, time_source_units_seconds, _create_enemy, true);

在此示例中,我们创建一个回调函数,该函数在房间中的随机位置创建一个新敌人。然后将该函数传递给 call_later,每 10 秒执行一次。最后一个参数设置为 true,因此该函数每 10 秒就会被调用一次。

使用 call_cancel 以及 call_later 返回的句柄来停止时间源和对回调的调用。