Go back
12
Functions sometimes get called with arguments for them. This happens for javacript events, such as keyboard events.

Inside that event, we can read what key is being pressed.

Press F12 to open your browsers console, and click the console tab. You should see the name of the key being pressed!
<canvas id="canvas" width=300 height=300 style="border: 1px solid black; background: #EEEEEE"></canvas>

<script>

	let canvas = document.getElementById('canvas')
	let ctx = canvas.getContext('2d')

	function drawRect(rect) {
		ctx.fillStyle = rect.color
		ctx.fillRect(rect.x, rect.y, rect.width, rect.height)
	}
	
	function updateRect(rect) {
		rect.x += rect.xspeed
		rect.y += rect.yspeed
		
		if (rect.x > canvas.width)
			rect.x = -rect.width
		if (rect.y > canvas.height)
			rect.y = -rect.height
			
		if (rect.x < -rect.width)
			rect.x = canvas.width
		if (rect.y < -rect.height)
			rect.y = canvas.height
	}
	
	let rect1 = { x: 0, y: 0, width: 32, height: 32, color: "blue", xspeed: 0.4, yspeed: 0.1 }
	let rect2 = { x: 0, y: 0, width: 20, height: 20, color: "green", xspeed: -0.2, yspeed: 0.05 }
	let rect3 = { x: 0, y: 0, width: 40, height: 40, color: "orange", xspeed: 0.5, yspeed: -0.1 }
	
	let rectArray = [rect1, rect2, rect3]
	
	//you can use a event argument to the function, this way we can get information such as which key was pressed
	function keyEvent(eventInfo) {
		console.log(eventInfo.code)
	}
	
	addEventListener("keydown", keyEvent);
	
	function update() {
		ctx.clearRect(0, 0, canvas.width, canvas.height)
		
		for (let rect of rectArray) {
			updateRect(rect)
			drawRect(rect)
		}
	}
	
	setInterval(update, 4)


</script>