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