HTML Canvas Animation Space Ship rotation from center

Description

HTML Canvas Animation Space Ship rotation from center

View in separate window

<!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>



PreviousNext

Related