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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access