Контекст выполнения
сценария определяет доступность и относительные адреса объектов и других программных
величин (переменных), используемых в сценарии.
Необходимость
учитывать контекст появляется в том случае, если в сценарии используется несколько
объектов или переменных с одинаковыми именами. Например, если вы создадите переменную
framePS
для хранения скорости воспроизведения основного фильма, а затем
— переменную с таким же именем (чего не бывает) для конкретного клипа, то рано
или поздно сценарий сработает не так, как предполагалось.
В связи с
эти необходимо учитывать следующую особенность ActionScript. Область видимости
переменной в нем определяется временной диаграммой, активной в настоящий момент.
Например, если в 10-м кадре основного фильма имеется клип, с которым связан
сценарий, то все переменные, имеющиеся в этом сценарии, будут влиять на поведение
временной диаграммы этого клипа, а не основного фильма. При условии, что в обращении
к переменным отсутствует ссылка на временную диаграмму более высокого уровня
(как может выглядеть такая ссылка, было сказано в предыдущем разделе).
С каждой временной
диаграммой связан специальный параметр — уровень диаграммы (он обозначается
с помощью ключевого слова _
level),
который определяет ее положение относительно
других временных диаграмм, загруженных в Flash-плеер. По умолчанию временная
диаграмма основного фильма имеет нулевой уровень. Каждой вызываемой из нее временной
диаграмме присваивается уровень, на единицу больший (рис. 11.3).
Рис. 11.3.
Иерархия временных диаграмм, загруженных в Flash-плеер
Таким образом,
область действия переменных в Flash-фильме распространяется сверху вниз: имя
переменной, созданной в сценарии временной диаграммы основного фильма, «видно»
в сценарии следующего уровня, если в нем нет своей переменной с таким же именем.
Кроме того,
внутри программного блока сценария, ограниченного фигурными скобками, могут
объявляться локальные переменные, которые «видны» только в пределах
этого блока.
Для управления
областью видимости переменных в ActionScript используется понятие «путь
назначения» — target path. Путь назначения позволяет указать принадлежность
объекта или переменной конкретной временной диаграмме, загруженной в Flash-плеер.
Чтобы правильно
записать путь назначения, необходимо учитывать объектную модель ActionScript
и взаимное положение временных диаграмм. Например, если вы хотите указать, что
требуется перейти к 10-му кадру основного фильма и воспроизвести его, вы можете
записать такую конструкцию:
Jevel0.gotoAndPlay(l
0).
Возможны два
варианта указания пути назначения: абсолютный и относительный.
Абсолютный
путь вычисляется, как правило, на основе уровня временной диаграммы (как в приведенном
выше примере). Указав в качестве отправной точки уровень диаграммы, вы можете
быть уверены, что Flash-плеер правильно отыщет адресата, даже после того, как
вы переместите фрагмент сценария, из которого выполнено обращение.
Относительный
путь вычисляется с учетом положения той диаграммы, из которой выполняется обращение.
Такой вариант более компактный, но менее надежный. Например, чтобы обратиться
к кадру диаграммы, расположенной двумя уровнями выше текущей, можно записать
такую конструкцию:
_parent._parent.muClip.
Однако после
перемещения клипа, например, на более высокий уровень, относительная ссылка
станет некорректной.
Итак, при
создании сценариев на ActionScript возможно использование трех типов переменных,
различающихся областью видимости: