【发布时间】:2017-01-11 21:21:21
【问题描述】:
我知道现实生活中递归的例子并不多。我想我今天找到了一个,我想以问答方式分享它,因为我觉得它很吸引人。
我正在为我的游戏使用Phaser 引擎。用户点击后,我需要找到用户点击的游戏元素。一旦有多个元素一个在另一个之上,这就会变得复杂。然后,我需要检查它们的渲染顺序并选择最高的元素。
在 Phaser 中,所有显示对象的根都是“世界”。所有现有元素要么是世界的直接子代,要么是子代的子代。这是一个以游戏世界为顶部的分支结构。子项按其渲染顺序排序,这意味着最后一个在顶部。
下面是一个例子,每个显示对象都用一个数字表示:
var world = [
[
18,
3,
[
1,
14,
2
],
5,
9,
[
3,
5
]
],
[
16,
7
]
];
这个数组共有三个级别,有两个主要的“组”。在游戏术语中,第二组添加在第一组之后,因此它呈现在顶部。在第一个组内,最后一个元素呈现在顶部,这是一个组。在该组内,最后一个元素再次呈现在顶部,依此类推。在所有这些元素中,最顶部呈现的是7,因为它是最后一个。
假设我单击鼠标,它恰好位于由大于 10 的数字表示的所有元素之上(18、14 和 16)。我需要的是16,因为它位于最下方。
我如何获得它?
【问题讨论】:
标签: javascript arrays recursion rendering