2

我在一个小项目上使用 matter.js,尝试使用 js 函数从 mattejs 世界中添加和删除对象。

add 函数似乎有效,remove 方法仅在添加函数内部有效-

var boxes = [];

function addCircle(Cid, Ccolor, Cradius) {
    boxes[Cid] =  Bodies.circle((w/2), (h/2), Cradius, {
            density: 0.0005,
            frictionAir: 0.06,
            restitution: 0.3,
            friction: 0.01,
            render: { fillStyle: Ccolor, strokeStyle: 'rgba(0,0,0,0)',
            lineWidth: 0,
         }
        });
    boxes[Cid].angle = Math.random() * 0.5;
    boxes[Cid].force.y -= 0.0001;
    World.add(engine.world, boxes[Cid]);
    //World.remove(engine.world, boxes[Cid]);  <-- This one works
}


function removeCircle(Cid) {
    //console.log(boxes[Cid]);
    World.remove(engine.world, boxes[Cid]); // <-- This one doesn't
}

控制台显示删除函数的错误“无法读取未定义的属性‘类型’”。有人可以告诉我如何解决这个问题吗?任何帮助和建议都将是非常可观的。

4

1 回答 1

1

要从世界中移除身体,您需要使用Composite.remove(...).

所以在你的情况下,它将是:

Composite.remove(engine.world, boxes[Cid]);
于 2018-02-17T16:42:02.440 回答