Search code examples
javascripthtmldomdocumentmatter.js

matter.js blank screen, nothing loads


I got a blank screen with the following code. I don't know why. I've tried using document.addEventListener() too but still nothing loads.

I've checked matter.js is running correctly. I am trying to render a canvas within a section of the page.

<script>
window.addEventListener('load', function() {

//Fetch our canvas
    var canvas = document.getElementById('world');
// module aliases
var Engine = Matter.Engine,
    Render = Matter.Render,
    World = Matter.World,
    Bodies = Matter.Bodies;

// create an engine
var engine = Engine.create();

// create a renderer
var render = Render.create({
        canvas: canvas,
        engine: engine,
        options: {
            width: 500,
            height: 500,
            background: '#000',
            wireframes: false,
            showAngleIndicator: false
});

// create two boxes and a ground
var boxA = Bodies.rectangle(400, 200, 80, 80);
var boxB = Bodies.rectangle(450, 50, 80, 80);
var ground = Bodies.rectangle(400, 610, 810, 60, { isStatic: true });

// add all of the bodies to the world
World.add(engine.world, [boxA, boxB, ground]);

// run the engine
Engine.run(engine);

// run the renderer
Render.run(render);
  });
</script>


<canvas id="world"></canvas>

enter image description here


Solution

  • Looks like a simple issue of a missing closing } on your options object.

    This:

    // create a renderer
    var render = Render.create({
            canvas: canvas,
            engine: engine,
            options: {
                width: 500,
                height: 500,
                background: '#000',
                wireframes: false,
                showAngleIndicator: false
    });
    

    Should be:

    // create a renderer
    var render = Render.create({
            canvas: canvas,
            engine: engine,
            options: {
                width: 500,
                height: 500,
                background: '#000',
                wireframes: false,
                showAngleIndicator: false}
    });
    

    For reference here is my fully working copy of your code.