Moving to a Click

Do this on pencilcode.net

A computer program responds to a mouse click by running a function.

Calling a Function on Every Click

Here is an example of an event handler function:

f = (e) -> moveto e
click f

Try it out. What does it do?

1. The function (e) -> moveto e takes one input e, and then it does one action: it moves the turtle to the location of the object e. That function is given the name f by f = (e) -> moveto e. Any name would work fine.

2. The command click f tells the computer to call f whenever the user clicks the mouse.

3. Every time you click, the computer creates an "Event" object representing the mouse click position, and it runs the function f, passing the mouse click event as input.

An Event Handler Function Without a Name

Programmers often skip the step of giving a name to a function. We can just define the function directly and give it to the click command without naming it. This code does the same thing as the above code, but it doesn't assign a name to the function:

click (e) -> moveto e

Other Mouse Events

There are other types of events. For example, each time the mouse moves, the computer can call a function each time the mousemoves by the command mousemove f.

Mousemove events happen very quickly, so to keep up with them, it is a good idea to move the turtle quickly with speed Infinity.

speed Infinity
mousemove (e) ->
  moveto e
click (e) ->
  pen random color