Drawing objects on canvas created by eventlisteners()












2














I am new to JavaScript and I am having a hard time understanding how to get the canvas to cooperate with stuff I want to do.



I am trying to have my HTML button outside the canvas create a rectangle on the canvas. Then I want the rectangle to fall. I have the canvas animated, I have the button set to create a rectangle at user inputted coordinates, but...the canvas won't animate it.



It won't fall like the statically created rectangles. I also am struggling with how to get my button to create a new rectangle each time instead of redrawing the same one? Hoping someone can explain more than just give me the code.
Thanks in advance.



var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
window.onload = addListeners;

function addListeners() {
document.getElementById('b1').addEventListener('click',btn1,false);

function btn1() {
var inputx = document.getElementById("work").value;
var inputy = document.getElementById("y").value;
var inputs = document.getElementById("s").value;
new Rectangle(inputx,inputy,inputs);
// rec.x = inputx;
//rec.y = inputy;
//rec.s = inputs;
}
}

var r2 = new Rectangle(500, 50, 50);
var rec = new Rectangle();

//animate
function animate() {
requestAnimationFrame(animate);
ctx.clearRect(0,0,1450,250);

r2.draw();
r2.update();
rec.draw();
rec.update();

}


code for rectangle:



function Rectangle(x,y,s){
this.x = x;
this.y = y;
this.s = s;

this.draw = function(){
//console.log('fuck');
ctx.fillStyle = "rgba(0,200,0,1)";
ctx.fillRect(this.x,this.y,this.s,this.s);

}

this.update = function(){
console.log(this.y);
if((this.y + this.s) <= 250){
this.y= this.y+2;
}
}


}










share|improve this question
























  • What do you mean "fall"?
    – JM-AGMS
    Nov 20 at 21:06










  • @JM-AGMS I mean adding to Y coordinate until the rectangle hits the bottom of the canvas...I'll update the code with my Rectangle function. I know that the update() method is being called for my rectangle because it will log y-coord to console. But yet it won't move from the same spot.
    – Joe Schmoe
    Nov 20 at 21:11






  • 1




    Doesn't look like the actual animation function is ever aware that new rectangles are being created. You probably need to have a list of rectangles in global scope that your button can add to, and then the animate function can call draw and update on each one.
    – Austin Mullins
    Nov 20 at 21:18
















2














I am new to JavaScript and I am having a hard time understanding how to get the canvas to cooperate with stuff I want to do.



I am trying to have my HTML button outside the canvas create a rectangle on the canvas. Then I want the rectangle to fall. I have the canvas animated, I have the button set to create a rectangle at user inputted coordinates, but...the canvas won't animate it.



It won't fall like the statically created rectangles. I also am struggling with how to get my button to create a new rectangle each time instead of redrawing the same one? Hoping someone can explain more than just give me the code.
Thanks in advance.



var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
window.onload = addListeners;

function addListeners() {
document.getElementById('b1').addEventListener('click',btn1,false);

function btn1() {
var inputx = document.getElementById("work").value;
var inputy = document.getElementById("y").value;
var inputs = document.getElementById("s").value;
new Rectangle(inputx,inputy,inputs);
// rec.x = inputx;
//rec.y = inputy;
//rec.s = inputs;
}
}

var r2 = new Rectangle(500, 50, 50);
var rec = new Rectangle();

//animate
function animate() {
requestAnimationFrame(animate);
ctx.clearRect(0,0,1450,250);

r2.draw();
r2.update();
rec.draw();
rec.update();

}


code for rectangle:



function Rectangle(x,y,s){
this.x = x;
this.y = y;
this.s = s;

this.draw = function(){
//console.log('fuck');
ctx.fillStyle = "rgba(0,200,0,1)";
ctx.fillRect(this.x,this.y,this.s,this.s);

}

this.update = function(){
console.log(this.y);
if((this.y + this.s) <= 250){
this.y= this.y+2;
}
}


}










share|improve this question
























  • What do you mean "fall"?
    – JM-AGMS
    Nov 20 at 21:06










  • @JM-AGMS I mean adding to Y coordinate until the rectangle hits the bottom of the canvas...I'll update the code with my Rectangle function. I know that the update() method is being called for my rectangle because it will log y-coord to console. But yet it won't move from the same spot.
    – Joe Schmoe
    Nov 20 at 21:11






  • 1




    Doesn't look like the actual animation function is ever aware that new rectangles are being created. You probably need to have a list of rectangles in global scope that your button can add to, and then the animate function can call draw and update on each one.
    – Austin Mullins
    Nov 20 at 21:18














2












2








2


0





I am new to JavaScript and I am having a hard time understanding how to get the canvas to cooperate with stuff I want to do.



I am trying to have my HTML button outside the canvas create a rectangle on the canvas. Then I want the rectangle to fall. I have the canvas animated, I have the button set to create a rectangle at user inputted coordinates, but...the canvas won't animate it.



It won't fall like the statically created rectangles. I also am struggling with how to get my button to create a new rectangle each time instead of redrawing the same one? Hoping someone can explain more than just give me the code.
Thanks in advance.



var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
window.onload = addListeners;

function addListeners() {
document.getElementById('b1').addEventListener('click',btn1,false);

function btn1() {
var inputx = document.getElementById("work").value;
var inputy = document.getElementById("y").value;
var inputs = document.getElementById("s").value;
new Rectangle(inputx,inputy,inputs);
// rec.x = inputx;
//rec.y = inputy;
//rec.s = inputs;
}
}

var r2 = new Rectangle(500, 50, 50);
var rec = new Rectangle();

//animate
function animate() {
requestAnimationFrame(animate);
ctx.clearRect(0,0,1450,250);

r2.draw();
r2.update();
rec.draw();
rec.update();

}


code for rectangle:



function Rectangle(x,y,s){
this.x = x;
this.y = y;
this.s = s;

this.draw = function(){
//console.log('fuck');
ctx.fillStyle = "rgba(0,200,0,1)";
ctx.fillRect(this.x,this.y,this.s,this.s);

}

this.update = function(){
console.log(this.y);
if((this.y + this.s) <= 250){
this.y= this.y+2;
}
}


}










share|improve this question















I am new to JavaScript and I am having a hard time understanding how to get the canvas to cooperate with stuff I want to do.



I am trying to have my HTML button outside the canvas create a rectangle on the canvas. Then I want the rectangle to fall. I have the canvas animated, I have the button set to create a rectangle at user inputted coordinates, but...the canvas won't animate it.



It won't fall like the statically created rectangles. I also am struggling with how to get my button to create a new rectangle each time instead of redrawing the same one? Hoping someone can explain more than just give me the code.
Thanks in advance.



var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
window.onload = addListeners;

function addListeners() {
document.getElementById('b1').addEventListener('click',btn1,false);

function btn1() {
var inputx = document.getElementById("work").value;
var inputy = document.getElementById("y").value;
var inputs = document.getElementById("s").value;
new Rectangle(inputx,inputy,inputs);
// rec.x = inputx;
//rec.y = inputy;
//rec.s = inputs;
}
}

var r2 = new Rectangle(500, 50, 50);
var rec = new Rectangle();

//animate
function animate() {
requestAnimationFrame(animate);
ctx.clearRect(0,0,1450,250);

r2.draw();
r2.update();
rec.draw();
rec.update();

}


code for rectangle:



function Rectangle(x,y,s){
this.x = x;
this.y = y;
this.s = s;

this.draw = function(){
//console.log('fuck');
ctx.fillStyle = "rgba(0,200,0,1)";
ctx.fillRect(this.x,this.y,this.s,this.s);

}

this.update = function(){
console.log(this.y);
if((this.y + this.s) <= 250){
this.y= this.y+2;
}
}


}







javascript canvas dynamic html5-canvas event-listener






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 at 2:05









JP4

76412




76412










asked Nov 20 at 19:34









Joe Schmoe

184




184












  • What do you mean "fall"?
    – JM-AGMS
    Nov 20 at 21:06










  • @JM-AGMS I mean adding to Y coordinate until the rectangle hits the bottom of the canvas...I'll update the code with my Rectangle function. I know that the update() method is being called for my rectangle because it will log y-coord to console. But yet it won't move from the same spot.
    – Joe Schmoe
    Nov 20 at 21:11






  • 1




    Doesn't look like the actual animation function is ever aware that new rectangles are being created. You probably need to have a list of rectangles in global scope that your button can add to, and then the animate function can call draw and update on each one.
    – Austin Mullins
    Nov 20 at 21:18


















  • What do you mean "fall"?
    – JM-AGMS
    Nov 20 at 21:06










  • @JM-AGMS I mean adding to Y coordinate until the rectangle hits the bottom of the canvas...I'll update the code with my Rectangle function. I know that the update() method is being called for my rectangle because it will log y-coord to console. But yet it won't move from the same spot.
    – Joe Schmoe
    Nov 20 at 21:11






  • 1




    Doesn't look like the actual animation function is ever aware that new rectangles are being created. You probably need to have a list of rectangles in global scope that your button can add to, and then the animate function can call draw and update on each one.
    – Austin Mullins
    Nov 20 at 21:18
















What do you mean "fall"?
– JM-AGMS
Nov 20 at 21:06




What do you mean "fall"?
– JM-AGMS
Nov 20 at 21:06












@JM-AGMS I mean adding to Y coordinate until the rectangle hits the bottom of the canvas...I'll update the code with my Rectangle function. I know that the update() method is being called for my rectangle because it will log y-coord to console. But yet it won't move from the same spot.
– Joe Schmoe
Nov 20 at 21:11




@JM-AGMS I mean adding to Y coordinate until the rectangle hits the bottom of the canvas...I'll update the code with my Rectangle function. I know that the update() method is being called for my rectangle because it will log y-coord to console. But yet it won't move from the same spot.
– Joe Schmoe
Nov 20 at 21:11




1




1




Doesn't look like the actual animation function is ever aware that new rectangles are being created. You probably need to have a list of rectangles in global scope that your button can add to, and then the animate function can call draw and update on each one.
– Austin Mullins
Nov 20 at 21:18




Doesn't look like the actual animation function is ever aware that new rectangles are being created. You probably need to have a list of rectangles in global scope that your button can add to, and then the animate function can call draw and update on each one.
– Austin Mullins
Nov 20 at 21:18












1 Answer
1






active

oldest

votes


















0














The button is not animating anything as the animate method was not being called. Also in your code when you called animate it ended in an infinite loop as requestAnimationFrame will continue to call animate repeatedly, so I've added a condition around requestAnimationFrame(animate) to check the squares height and stop running it when it reaches the bottom, similar to what you had in your update function.



To create a new square every time you click the button, I moved the creation of the Rectangles inside the btn1 function. If you want to keep the old squares while creating new ones, you will need to keep track of them outside the canvas and redraw them with everything else each animation.



I guessed what your html looks like, but you can run the code below it will drop two squares, but note that the stop condition is only on the hard coded one.






var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
document.getElementById("b1").addEventListener("click", btn1, false);

var r2;
var rec;

function btn1() {
var inputx = document.getElementById("work").value;
var inputy = document.getElementById("y").value;
var inputs = document.getElementById("s").value;
r2 = new Rectangle(500, 50, 50);
rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
animate();
}

//animate
function animate() {
if (r2.y + r2.s <= 400) {
requestAnimationFrame(animate);
}

ctx.clearRect(0,0,1450,400);
r2.draw();
r2.update();
rec.draw();
rec.update();

}

function Rectangle(x,y,s){
this.x = x;
this.y = y;
this.s = s;

this.draw = function(){
ctx.fillStyle = "rgba(0,200,0,1)";
ctx.fillRect(this.x,this.y,this.s,this.s);
}

this.update = function(){
this.y= this.y+2;
}
}

<div>
<input id='work'>
<input id='y'>
<input id='s'>
<button id="b1"> Create Sqaure</button>
</div>
<canvas id="myCanvas" width=600 height=400></canvas>








share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53400296%2fdrawing-objects-on-canvas-created-by-eventlisteners%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    The button is not animating anything as the animate method was not being called. Also in your code when you called animate it ended in an infinite loop as requestAnimationFrame will continue to call animate repeatedly, so I've added a condition around requestAnimationFrame(animate) to check the squares height and stop running it when it reaches the bottom, similar to what you had in your update function.



    To create a new square every time you click the button, I moved the creation of the Rectangles inside the btn1 function. If you want to keep the old squares while creating new ones, you will need to keep track of them outside the canvas and redraw them with everything else each animation.



    I guessed what your html looks like, but you can run the code below it will drop two squares, but note that the stop condition is only on the hard coded one.






    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    document.getElementById("b1").addEventListener("click", btn1, false);

    var r2;
    var rec;

    function btn1() {
    var inputx = document.getElementById("work").value;
    var inputy = document.getElementById("y").value;
    var inputs = document.getElementById("s").value;
    r2 = new Rectangle(500, 50, 50);
    rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
    animate();
    }

    //animate
    function animate() {
    if (r2.y + r2.s <= 400) {
    requestAnimationFrame(animate);
    }

    ctx.clearRect(0,0,1450,400);
    r2.draw();
    r2.update();
    rec.draw();
    rec.update();

    }

    function Rectangle(x,y,s){
    this.x = x;
    this.y = y;
    this.s = s;

    this.draw = function(){
    ctx.fillStyle = "rgba(0,200,0,1)";
    ctx.fillRect(this.x,this.y,this.s,this.s);
    }

    this.update = function(){
    this.y= this.y+2;
    }
    }

    <div>
    <input id='work'>
    <input id='y'>
    <input id='s'>
    <button id="b1"> Create Sqaure</button>
    </div>
    <canvas id="myCanvas" width=600 height=400></canvas>








    share|improve this answer


























      0














      The button is not animating anything as the animate method was not being called. Also in your code when you called animate it ended in an infinite loop as requestAnimationFrame will continue to call animate repeatedly, so I've added a condition around requestAnimationFrame(animate) to check the squares height and stop running it when it reaches the bottom, similar to what you had in your update function.



      To create a new square every time you click the button, I moved the creation of the Rectangles inside the btn1 function. If you want to keep the old squares while creating new ones, you will need to keep track of them outside the canvas and redraw them with everything else each animation.



      I guessed what your html looks like, but you can run the code below it will drop two squares, but note that the stop condition is only on the hard coded one.






      var c = document.getElementById("myCanvas");
      var ctx = c.getContext("2d");
      document.getElementById("b1").addEventListener("click", btn1, false);

      var r2;
      var rec;

      function btn1() {
      var inputx = document.getElementById("work").value;
      var inputy = document.getElementById("y").value;
      var inputs = document.getElementById("s").value;
      r2 = new Rectangle(500, 50, 50);
      rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
      animate();
      }

      //animate
      function animate() {
      if (r2.y + r2.s <= 400) {
      requestAnimationFrame(animate);
      }

      ctx.clearRect(0,0,1450,400);
      r2.draw();
      r2.update();
      rec.draw();
      rec.update();

      }

      function Rectangle(x,y,s){
      this.x = x;
      this.y = y;
      this.s = s;

      this.draw = function(){
      ctx.fillStyle = "rgba(0,200,0,1)";
      ctx.fillRect(this.x,this.y,this.s,this.s);
      }

      this.update = function(){
      this.y= this.y+2;
      }
      }

      <div>
      <input id='work'>
      <input id='y'>
      <input id='s'>
      <button id="b1"> Create Sqaure</button>
      </div>
      <canvas id="myCanvas" width=600 height=400></canvas>








      share|improve this answer
























        0












        0








        0






        The button is not animating anything as the animate method was not being called. Also in your code when you called animate it ended in an infinite loop as requestAnimationFrame will continue to call animate repeatedly, so I've added a condition around requestAnimationFrame(animate) to check the squares height and stop running it when it reaches the bottom, similar to what you had in your update function.



        To create a new square every time you click the button, I moved the creation of the Rectangles inside the btn1 function. If you want to keep the old squares while creating new ones, you will need to keep track of them outside the canvas and redraw them with everything else each animation.



        I guessed what your html looks like, but you can run the code below it will drop two squares, but note that the stop condition is only on the hard coded one.






        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        document.getElementById("b1").addEventListener("click", btn1, false);

        var r2;
        var rec;

        function btn1() {
        var inputx = document.getElementById("work").value;
        var inputy = document.getElementById("y").value;
        var inputs = document.getElementById("s").value;
        r2 = new Rectangle(500, 50, 50);
        rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
        animate();
        }

        //animate
        function animate() {
        if (r2.y + r2.s <= 400) {
        requestAnimationFrame(animate);
        }

        ctx.clearRect(0,0,1450,400);
        r2.draw();
        r2.update();
        rec.draw();
        rec.update();

        }

        function Rectangle(x,y,s){
        this.x = x;
        this.y = y;
        this.s = s;

        this.draw = function(){
        ctx.fillStyle = "rgba(0,200,0,1)";
        ctx.fillRect(this.x,this.y,this.s,this.s);
        }

        this.update = function(){
        this.y= this.y+2;
        }
        }

        <div>
        <input id='work'>
        <input id='y'>
        <input id='s'>
        <button id="b1"> Create Sqaure</button>
        </div>
        <canvas id="myCanvas" width=600 height=400></canvas>








        share|improve this answer












        The button is not animating anything as the animate method was not being called. Also in your code when you called animate it ended in an infinite loop as requestAnimationFrame will continue to call animate repeatedly, so I've added a condition around requestAnimationFrame(animate) to check the squares height and stop running it when it reaches the bottom, similar to what you had in your update function.



        To create a new square every time you click the button, I moved the creation of the Rectangles inside the btn1 function. If you want to keep the old squares while creating new ones, you will need to keep track of them outside the canvas and redraw them with everything else each animation.



        I guessed what your html looks like, but you can run the code below it will drop two squares, but note that the stop condition is only on the hard coded one.






        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        document.getElementById("b1").addEventListener("click", btn1, false);

        var r2;
        var rec;

        function btn1() {
        var inputx = document.getElementById("work").value;
        var inputy = document.getElementById("y").value;
        var inputs = document.getElementById("s").value;
        r2 = new Rectangle(500, 50, 50);
        rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
        animate();
        }

        //animate
        function animate() {
        if (r2.y + r2.s <= 400) {
        requestAnimationFrame(animate);
        }

        ctx.clearRect(0,0,1450,400);
        r2.draw();
        r2.update();
        rec.draw();
        rec.update();

        }

        function Rectangle(x,y,s){
        this.x = x;
        this.y = y;
        this.s = s;

        this.draw = function(){
        ctx.fillStyle = "rgba(0,200,0,1)";
        ctx.fillRect(this.x,this.y,this.s,this.s);
        }

        this.update = function(){
        this.y= this.y+2;
        }
        }

        <div>
        <input id='work'>
        <input id='y'>
        <input id='s'>
        <button id="b1"> Create Sqaure</button>
        </div>
        <canvas id="myCanvas" width=600 height=400></canvas>








        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        document.getElementById("b1").addEventListener("click", btn1, false);

        var r2;
        var rec;

        function btn1() {
        var inputx = document.getElementById("work").value;
        var inputy = document.getElementById("y").value;
        var inputs = document.getElementById("s").value;
        r2 = new Rectangle(500, 50, 50);
        rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
        animate();
        }

        //animate
        function animate() {
        if (r2.y + r2.s <= 400) {
        requestAnimationFrame(animate);
        }

        ctx.clearRect(0,0,1450,400);
        r2.draw();
        r2.update();
        rec.draw();
        rec.update();

        }

        function Rectangle(x,y,s){
        this.x = x;
        this.y = y;
        this.s = s;

        this.draw = function(){
        ctx.fillStyle = "rgba(0,200,0,1)";
        ctx.fillRect(this.x,this.y,this.s,this.s);
        }

        this.update = function(){
        this.y= this.y+2;
        }
        }

        <div>
        <input id='work'>
        <input id='y'>
        <input id='s'>
        <button id="b1"> Create Sqaure</button>
        </div>
        <canvas id="myCanvas" width=600 height=400></canvas>





        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        document.getElementById("b1").addEventListener("click", btn1, false);

        var r2;
        var rec;

        function btn1() {
        var inputx = document.getElementById("work").value;
        var inputy = document.getElementById("y").value;
        var inputs = document.getElementById("s").value;
        r2 = new Rectangle(500, 50, 50);
        rec = new Rectangle(parseInt(inputx, 10), parseInt(inputy, 10), parseInt(inputs, 10));
        animate();
        }

        //animate
        function animate() {
        if (r2.y + r2.s <= 400) {
        requestAnimationFrame(animate);
        }

        ctx.clearRect(0,0,1450,400);
        r2.draw();
        r2.update();
        rec.draw();
        rec.update();

        }

        function Rectangle(x,y,s){
        this.x = x;
        this.y = y;
        this.s = s;

        this.draw = function(){
        ctx.fillStyle = "rgba(0,200,0,1)";
        ctx.fillRect(this.x,this.y,this.s,this.s);
        }

        this.update = function(){
        this.y= this.y+2;
        }
        }

        <div>
        <input id='work'>
        <input id='y'>
        <input id='s'>
        <button id="b1"> Create Sqaure</button>
        </div>
        <canvas id="myCanvas" width=600 height=400></canvas>






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 21 at 7:20









        JP4

        76412




        76412






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53400296%2fdrawing-objects-on-canvas-created-by-eventlisteners%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            404 Error Contact Form 7 ajax form submitting

            How to know if a Active Directory user can login interactively

            TypeError: fit_transform() missing 1 required positional argument: 'X'