繁体   English   中英

在HTML画布中移动旋转的对象

[英]Move a rotating object in a HTML Canvas

我有一个HTML画布。 在其中,我绘制了一个六边形。 六角形旋转到位。 好吧,现在我希望这个旋转的六角形沿着设定的路径移动。 我希望能够跟踪它的位置。

通常,当您要移动对象时,您会说:(object.x + howmuchtomove),它只会移动那么多,您只需添加object.x + howmuchtomove以获取x坐标即可跟踪其下落。

好吧,在这种情况下,我使用平移和旋转来赋予它旋转效果。 因此,在x位置加上+2只会使其旋转更大的圆圈。

这就是我所拥有的,谢谢!

   retObject.draw = function() {    
        // Wipe the canvas      
        ctx.fillStyle = "rgba(0, 0, 0, 1)";         
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillRect(0, 0, canvas.width, canvas.height);

        // Draw rotating shape
        ctx.save(); // Don't rotate everything
        ctx.strokeStyle="red"; // Set Color     
        ctx.translate(356.5, 700); // Center pivot inside hexagon
        ctx.rotate(rotValue*(Math.PI/180)); // Rotate           
        ctx.translate(-356.5, -700); // Un-Translate    
            for (i=0;i<3;i++) {
                ctx.beginPath();        
                ctx.moveTo(300, 700); 
                ctx.lineTo(330, 650);
                ctx.lineTo(383, 650);
                ctx.lineTo(413, 700);
                ctx.lineTo(383, 750);
                ctx.lineTo(330, 750);
                ctx.lineTo(300, 700);
                ctx.stroke(); // Draw Hexagon
            }
        ctx.restore(); // Get back normal
    }

请注意,draw()在循环内,因此每帧都会被调用。

因此,为简单起见,我只想让这个旋转的六边形直接下降。 基本上我想在每帧的y坐标上加上+1。

好吧,我想通了,我感到很愚蠢。

您只需将所需的移动量仅添加到第一个平移中即可。

所以:

ctx.translate(356.5, 700);

变为:

ctx.translate(356.5, 700+moveAmount);

这将使其每帧直接向下移动“ moveAmount”。
也许这会帮助某人大声笑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM