Removing an event handler
How do you get rid of an event? What if you want a layer to stop listening to, say, a tap gesture?
You must have noticed that all the events start with ‘on’ (
onDoubleTap…). This is because we’re activating an event on a layer, in other words, switching it ‘on’.
We’ve actually been using shortcuts. This:
Is short for this:
layerA.on Events.Tap, ->
In addition to
layer.on there’s also a
layer.off, for telling the layer to stop listening to an event.
layer.off you’ll have to put your function in a variable, so that you can tell the layer which function to not execute any longer.
# ‘tapHandler’ contains a function tapHandler = -> redSquare.backgroundColor = "green"
# ‘tapHandler’ gets triggered on ‘Events.Tap’ redSquare.on Events.Tap, tapHandler # ‘tapHandler’ ceases to trigger on ‘Events.Tap’ redSquare.off Events.Tap, tapHandler
Note that when you directly add a function (like
tapHandler above), you don’t have to call the function. In other words, you don’t need to type
It’s a bit annoying, though, to have to make separate functions. You might opt instead to have your layer simply ignore events.