Space Movie with Working Start/Stop

To avoid global variables, motor goes inside initialize as an immediate function utilizing closure.

Example F.22. universal2a.html
<!doctype html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>Universe</title>
        <link rel='stylesheet' href='css/myotherstyles.css'/>
        <script src='js/nQuery.js'></script>
        <script src='js/CanvasObject.js'></script>
        <script src='js/SObject.js'></script>
        <script>
            'use strict';
            let initialize = function () {
                let idle = true;    // start/stop toggle sw
                let go;             // var name of motor
                
                let i = 0;
                let ufos = [];
                let cv = Object.create(Canvas);
                cv.init('universe', '#000');
                
                let co = Object.create(SO);             // central obj
                co.init(cv, 
                        cv.getWidth()/2, cv.getHeight()/2, 5, 
                        0, 0, '#ff8', 
                        0, 0, false);
                ufos.push(co);

                let xo = Object.create(SO);             // planet 
                xo.init(cv,  
                        20, 20, 4, 
                        20, 1, '#add8e6', 
                        90, 90, co);
                ufos.push(xo);

                let yo = Object.create(SO);             // moon to xo
                yo.init(cv, 
                        20, 20, 2, 
                        270, 4, '#ff8', 
                        10, 15, xo);
                ufos.push(yo);

                xo = Object.create(SO);                 // planet
                xo.init(cv, 
                        20, 20, 3, 
                        50, 1, '#f64', 
                        130, 130, co);
                ufos.push(xo);

                let zo = Object.create(SO);             // planet
                zo.init(cv, 
                        20, 20, 16, 
                        70, .5, '#a33', 
                        360, 220, co);
                ufos.push(zo);

                yo = Object.create(SO);                 // moon to zo
                yo.init(cv, 
                        20, 20, 2, 
                        270, 5, '#ccc', 
                        20, 20, zo);
                ufos.push(yo);
                
                yo = Object.create(SO);                 // moon to zo
                yo.init(cv, 
                        20, 20, 2, 
                        200, 3, '#ccc', 
                        30, 30, zo);
                ufos.push(yo);
                
                yo = Object.create(SO);                 // moon to zo
                yo.init(cv, 
                        20, 20, 2, 
                        135, -2, '#ccc', 
                        40, 40, zo);
                ufos.push(yo);
                
                yo = Object.create(SO);                 // moon to zo
                yo.init(cv, 
                        20, 20, 2, 
                        60, 4, '#ccc', 
                        47, 47, zo);
                ufos.push(yo);

                zo = Object.create(SO);                 // planet
                zo.init(cv, 
                        20, 20, 2, 
                        270, .2, '#ccc', 
                        420, 260, co);
                ufos.push(zo);

                var u = document.getElementById('universe');
                var motor;
                u.addEventListener('click', motor = function () {
                            if(idle) {                  // if idle run it
                                go = setInterval( () => {
                                    cv.clear();
                                    cv.prep();
                                    for (let ufo of ufos) {
                                        ufo.move();     // iterate over
                                        ufo.draw();     // all array values
                                    }
                                }, 20);
                                idle = false;
                            } else {
                                clearInterval(go);      // running, stop it
                                idle = true;
                            }
                        }, false);
                motor();
            }
            
            window.addEventListener('load', initialize, false);
        </script>
    </head>
    <body>
        <section>
            <canvas id='universe' width='987' height='610'>
                If you see this text long enough to read it,
                your browser sucks.
            </canvas>
        </section>
    </body>
</html>

Test it!