Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008 |
Базовые понятия Action Script
Директива #include
Как и в С++, во Флэш МХ есть директива #include . И хотя возможности ее здесь не столь широки (в первую очередь из-за отсутствия препроцессора), польза ее несомненна.
Как включить файл
В первую очередь давайте создадим файл по имени inc1.as (расширение as есть сокращение от слов Action Script). Затем создадим новый флэш-документ (*.fla) и сохраним его в ту же директорию, где лежит inc1.as. В inc1.as напишите, например,
trace("inc1.as included");
Во флэш-документе в первом кадр поместите код
#include "inc1.as"
Обратите внимание, что точку с запятой ставить после этой директивы нельзя. Вообще ничего лишнего в строке после директивы писать нельзя (а вот до знака #, как это ни странно, иногда можно, но лучше не пишите там ничего; пользы от этого все равно никакой не будет). Кавычки должны быть обязательно двойными.
После запуска этого кода вы увидите, что в консоль выдана строчка inc1.as included - включение файла сработало!
При работе с #include допускаются включения файлов по цепочке. Также можно указывать путь к файлу, считая от директории, куда сохранен *.fla-файл. Допускаются также полные пути с указанием диска. В пути можно использовать прямые и обратные слэши, причем в любых количествах (то есть обратные слэши могут быть одинарные, двойные или даже четверные - все равно это работает. Даже прямые слэши можно удваивать и утраивать, если есть на то желание). Не забудьте, что если вы включаете файлы по цепочке и указываете не абсолютные пути (с именем диска), а относительные, - в любом из файлов пути будут отсчитываться от директории, в которую сохранен исходный флэш-документ.
Наконец, упомянем, что включаемые файлы можно сохранять не только в кодировке ANSI, но и в UTF-8 (это может быть полезно, например, если вы используете строковые константы на различных языках). Однако если вы сохраняете включаемый файл в UTF-8, его первыми символами обязательно должны быть //!-- UTF8 (никаких пробелов перед знаком комментария и строго один пробел перед надписью UTF8). В противном случае компилятор не сможет подключить такой файл и выдаст ошибку.
Когда происходит включение
Включение кода из указанного файла происходит в момент компиляции. Более того, никаких средств условной компиляции (наподобие директив препроцессора в С) во Флэше нет. Таким образом, повлиять на то, будет ли включен определенный код в ваш флэш-ролик, или же не будет, нет никакой возможности. Будет! А если нужный файл не будет найден по указанному вами пути, при компиляции будет выдана ошибка. Так что если вам очень нужно подменять включаемый код, вам придется для этого пользоваться средствами операционной системы (сетевыми дисками, командой subst, soft - и hard -линками). О том, как это удобнее всего устроить, читайте в лекции про средства коллективной работы.
Зато вам не нужно заботиться о ваших включаемых файлах при запуске флэш-ролика. В отличие от файлов с переменными и настройками, которые вы можете подгружать явным образом при помощи объекта LoadVars (см. лекцию 14), включаемые файлы после компиляции больше не нужны.
Стражи включения
Управлять тем, включается ли заданный код в ваш ролик в зависимости от определенных условий вы (средствами Флэш) не можете, однако вы можете воздействовать на то, выполняется ли этот код. То есть вы вполне можете вставить директиву #include внутри блока, предваренного инструкцией if. Или даже - внутри определения какой-либо функции. Дальнейшая ваша задача - добиться того, чтобы код и в этом обрамлении работал так, как надо. Здесь есть ряд тонких моментов, связанных, например, с определением функций внутри блоков или внутри других функций. Эти моменты будут подробно разобраны в лекции 5, посвященной функциям Флэш МХ. В частности, там разобран вопрос о том, как организовать стражи включения для файлов, содержащих определения функций. Эта задача содержит в себе подвох, поскольку для ее решения подходит лишь один (причем менее употребительный) из двух существующих во Флэш МХ методов определения функций. Поэтому прочтите лекцию 5, прежде чем начнете организовывать стражи включения.