Event Handler Scope
As with any function, the statements in an event handler execute within a predefined scope. Scope dictates where the interpreter looks to resolve the variables, subfunctions, objects, or properties referenced in an event handler’s body. We’ll consider event handler scope in relation to movie clip events, button events, and other object events.
Movie Clip Event Handler Scope
Unlike regular functions,
movie clip event handlers
do not define a local scope ! When we attach a
handler to a clip, the scope of the handler is the clip, not just the
event handler itself. This means that all variables are retrieved
from the clip’s timeline. For example, if we attach an
enterFrame
event handler to a clip named
navigation
and write
trace(x); inside the handler, the interpreter
looks for the value of x
on
navigation
’s timeline:
onClipEvent (enterFrame) { trace(x); // Displays the value of navigation.x }
The interpreter does not consult a local scope first because there is
no local scope to consult. If we write var y =
10; in our handler, y
is defined on
navigation
’s timeline, even though the
var
keyword ordinarily declares a local variable
when used in a function.
The easiest way to remember the scope rules of a clip event handler
is to treat the handler’s statements as though they were
attached to a frame of the handler’s clip. For example, suppose
we have a clip named ball
that has a variable
called xVelocity
in it. To access
xVelocity
from inside a ball
event handler, we simply ...
Get ActionScript: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.