Как исправить ошибку "composite.Add не является функцией", вызванной кодом, еще не запускающимсяJavascript

Форум по Javascript
Anonymous
Как исправить ошибку "composite.Add не является функцией", вызванной кодом, еще не запускающимся

Сообщение Anonymous »

Я делаю проект с использованием Matterjs. Однако у меня есть некоторые трудности. Всякий раз, когда я запускаю свой код, он бросает тип ошибки TypeError: composite.Add (...) не является функцией. ошибка при запуске. Оказывается, что ошибка возникает только тогда, когда код для визуализации сцены включен. Я не включил код рендеринга в фрагмент, потому что он был запущен после , по которой ошибочна ошибка. Как мне это исправить, и почему это происходит?

вот мой код: < /p>

Код: Выделить всё

window.addEventListener("DOMContentLoaded", () => {
console.log('loaded')

var Engine = Matter.Engine,
Render = Matter.Render,
Runner = Matter.Runner,
Bodies = Matter.Bodies,
Composite = Matter.Composite,
Body = Matter.Body,
Events = Matter.Events;
World = Matter.World;
var engine = Engine.create({
gravity: {
x: 0,
y: 1,
scale: 0
}
});

world = engine.world;

var w = window.innerWidth;
var h = window.innerHeight;
var canvas = document.getElementById('canvasM');
let ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

let circleA = Bodies.circle(100, 100, 10);
//The line on which the error is thrown. The console says the error occurs on a different line, but this is the only time "Composite.add" is referenced
Composite.add(world, [circleA])
//if I uncomment this line, the code runs fine, but without a renderer
//return
(function render() {
ctx.clearRect(0, 0, 1000, 1000)
var bodies = Composite.allBodies(engine.world);

window.requestAnimationFrame(render);

ctx.beginPath();

for (var i = 0; i < bodies.length; i += 1) {
var vertices = bodies[i].vertices;

ctx.moveTo(vertices[0].x, vertices[0].y);

for (var j = 1; j < vertices.length; j += 1) {
ctx.lineTo(vertices[j].x, vertices[j].y);
}
ctx.lineWidth = 3;
ctx.fill = '#fff';
ctx.strokeStyle = "#000"
ctx.stroke();

}

Matter.Engine.update(engine, 1000 / 60);
})();

})< /code>






Подробнее здесь: https://stackoverflow.com/questions/794 ... ot-yet-run

Вернуться в «Javascript»