还有一些与使用 数组 相关的函数。这些旨在为您提供代码的灵活性,并允许您在制作游戏时创建更多函数和动态的数组。
回调方法与数组一起传递给数组函数,如 array_foreach。
GameMaker 在给定数组的每个元素上运行回调方法。对于数组中的每个元素,它将两个参数传递给您的回调方法:
在回调方法中,如果数组函数需要返回值 (如 array_map),则可以使用这些参数来计算返回值。
根据回调方法为每个元素返回的内容,将返回结果值或数组的修改副本。但是,如果您使用的是 _ext 函数之一,则会修改原始数组,而不是复制。
当回调方法只需要返回 true 或 false 时,它被称为谓词方法。谓词用于告知数组中的元素是否符合条件。
让我们创建一个谓词方法来检查数组中是否包含字符串 "apple"。
为此,我们将使用 array_any 函数:
var _array =
[
"apple",
"banana",
"coconut",
"dragonfruit"
]
var _contains_apple = array_any(_array, function(_val, _ind)
{
return _val == "apple"
});
show_debug_message(_contains_apple); // prints 1 (true)
我们的判断方法检查 _val=="apple" 并返回结果。当数组的任何一个元素为 true 时,array_any 将返回 true。
默认情况下,判断方法在数组内的所有元素上运行,但是大多数高级数组函数还带有两个额外的参数:offset 和 length。
使用 offset 和 length 参数,您可以决定希望函数查看数组的哪个部分,以及希望它朝哪个方向前进 (向前或向后)。
如果该函数返回数组的修改版本,则只返回被操作的元素,并按其操作顺序返回。例如,当偏移量为 3,长度为 3 时,元素 3, 4, 5 将被操作并作为新数组返回,其余元素 (如 0, 1, 2, 6, 7, 等等......) 将被销毁。