es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Por qué mi objeto no cambia de posición cuando le añado un valor

<hmtl>
<head>
<!-- <script src='main.js'></script> -->
</head>
<body>
<canvas id='myCanvas'> </canvas>
<script>
function shape(x,y){
this.x=x;
this.y=y;
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = "#FF0000";
ctx.fillRect( this.x, this.y, 50, 50);
}
}
var sqr=new shape(100,100)
sqr.x+=100
</script>
</body>
</hmtl>

Por qué le sumo 100 a x y espero que su posición sea (200,100), pero cuando abro el servidor en vivo, su posición sigue siendo (100,100).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un error de sintaxis en el código proporcionado. La definición de la función shape tiene una llave de cierre adicional } que debería ser eliminada:

    function shape(x,y){
        this.x=x;
        this.y=y;
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");
        ctx.fillStyle = "#FF0000";
        ctx.fillRect( this.x, this.y, 50, 50);
    } // eliminar esta llave de cierre
    
    var sqr=new shape(100,100)
    sqr.x+=100
    

    Suponiendo que se corrija este error de sintaxis, la razón por la cual agregar 100 a sqr.x no cambia la posición del rectángulo dibujado en el lienzo es porque la función shape solo se llama una vez para dibujar el rectángulo inicial. Cualquier modificación posterior al objeto sqr no afectará al lienzo a menos que se llame nuevamente a la función shape con las coordenadas actualizadas.

Comments are closed.