gpt4 book ai didi

javascript [array].splice 不工作 ("Uncaught TypeError: collisions.splice is not a function")

转载 作者:行者123 更新时间:2023-11-30 08:30:18 26 4
gpt4 key购买 nike

我正在尝试从 javascript 中的数组中删除特定项目,但似乎无法使 [array].splice 函数正常工作。
此代码用于检查 SVG 对象是否与另一个对象发生碰撞(对于游戏)。玩家总是希望与 3 个对象相交,因此我希望将它们从列表中删除。
到目前为止我的代码是:

svg=document.getElementById("canvas");

function checkcollision(){
var r0=document.getElementById("rhb1").getBoundingClientRect(), r1=svg.createSVGRect(); r1.x=r0.left; r1.y=r0.top; r1.width=r0.width; r1.height=r0.height;
var collisions=svg.getIntersectionList(r1,null), len=collisions.length;
console.log(collisions);
for(i=len-1;i>=0;i--){
if(collisions[i].id=="renclosure"||collisions[i].id=="cplayer"||collisions[i].id=="rhb1"){
collisions.splice(i,1);
}
}
console.log(collisions);
if(collisions.length>0){
return true;
}
else{
return false;
}
}

控制台为碰撞数组显示的示例是

[<rect id=​"renclosure" x=​"0" y=​"0" width=​"15360" height=​"8640" class=​"st0">​</rect>​, <circle id=​"cplayer" cx=​"960" cy=​"540" r=​"50" class=​"st1">​</circle>​, <rect id=​"rhb1" x=​"0" y=​"0" width=​"100" height=​"100" class=​"st2" transform=​"translate(910, 490)​ rotate(0 050 050)​">​</rect>​]

(直接复制)。
然而,谷歌浏览器每次都会抛出错误“Uncaught TypeError: collisions.splice is not a function”,我不明白为什么(或如何修复)。

最佳答案

您的碰撞不是数组类型

尝试使用

Array.prototype.splice.call(collisions, i, 1)

关于splice.call() 看这里Function.prototype.call

关于javascript [array].splice 不工作 ("Uncaught TypeError: collisions.splice is not a function"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com