HTML Canvas Animation Space Ship rotation from center
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ch8Ex6 - </title> </head>/* w w w .ja v a2 s. c o m*/ <body> <canvas id="canvas" width="200" height="200"> Your browser does not support the HTML 5 Canvas. </canvas> <script type="text/javascript"> let theCanvas = document.getElementById('canvas'); let context = theCanvas.getContext('2d'); //canvasApp level variables let rotation=0; let x=50; let y=50; let width=20; let height=20; function drawScreen() { // draw background and text context.fillStyle = '#000000'; context.fillRect(0, 0, 200, 200); context.fillStyle = '#ffffff'; context.font = '20px sans-serif'; context.textBaseline = 'top'; context.fillText ("Player Ship - rotate", 0, 180); //transformation let angleInRadians = rotation * Math.PI / 180; context.save(); //save current state in stack context.setTransform(1,0,0,1,0,0); // reset to identity //translate the canvas origin to the center of the player context.translate(x+.5*width,y+.5*height); context.rotate(angleInRadians); //drawShip context.strokeStyle = '#ffffff'; context.beginPath(); //hard coding in locations context.moveTo(0,-10); context.lineTo(9,9); context.lineTo(0,-1); context.moveTo(-1,-1); context.lineTo(-10,9); context.lineTo(-1,-10); context.stroke(); context.closePath(); //restore context context.restore(); //pop old state on to screen //add to rotation rotation++; } const FRAME_RATE=40; let intervalTime=1000/FRAME_RATE; gameLoop(); function gameLoop() { drawScreen(); window.setTimeout(gameLoop, intervalTime); } </script> </body> </html>