实际上我使用的是p5.js,但我想内置函数中的js也应以与javascript中相同的方式工作。
给出是存储在数组中的动态生成对象的列表。这些对象具有坐标(x,y),大小和其他一些属性。这些对象根据其属性(方向,速度)在屏幕上移动
我想写一个函数,在这里我可以检查对象的坐标,如果它们发生碰撞,它们应该改变方向,例如为此,我需要将数组中的每个元素彼此进行比较。
由于我有许多未知的元素,因此我用
进行了迭代for (let i in array)
然后我要弹出第一个元素,并在每个循环的包含元素中将其与数组的其余部分进行比较。
此循环后,我想将该元素移到数组上,以便对整个数组执行相同的操作。
我想,pop()的内置函数不会向我返回该元素,因为我收到一个错误,让我想一下,此数组的对象已被其他内容更改了。
我该如何解决?
这是此功能的代码:
function checkCollisions() {
for (let i in array_of_objects) {
let element = array_of_objects.pop()
for (let j in array_of_objects) {
if (comparison_of_some_attributes_between(element, array_of_objects[j])) {
some_changes_on_attributes_of(element, array_of_objects[j])
}
array_of_objects.unshift(element)
}
}
答案 0 :(得分:0)
您在每个循环中使用a,该循环存储对象,而不存储变量(i
,j
)中的索引。
因此,您应该只使用j
而不是array_of_objects[j]
但是,最重要的是,您应该放
array_of_objects.unshift(element)
第二个for循环的外部(将其向下移动2行)。否则,您将多次取消移动它,该操作只应发生一次。
(而且我不确定您的原始代码中是否确实如此),您缺少右花括号。