Урок 13. Создание функций Функция -
это часть кода, которая может быть использована
многократно. Вы можете передавать в нее несколько
значений и получать из нее новые. Примером является
функция, выдающая сумму двух чисел. Вот как она будет
выглядеть в ActionScript:
function sum(a, b) { с = a +
b; return c; } Обычно функции помещаются в
сценарии кадра главной временной шкалы. Функция задается
при помощи ключевого (зарезервированного) слова
function. Затем указывается имя функции, за которым
следуют круглые скобки и открытая фигурная скобка {.
Круглые скобки могут быть пустыми или содержать список
переменных, задаваемых при вызове функции. Эти
переменные называются параметрами функции (или
аргументами). Например, предыдущая функция может быть
вызвана следующим образом:
trace (sum (7, 12)); Результатом
обращения к функции будет число 19, помещаемое командой
trace в окно Output. При обращении к функции sum
значение 7 передается в функцию как переменная а, а значение 12 - как переменная
b. После выполнения функции
команда return посылает значение с обратно к sum.
Таким образом, для выполнения своей функции команда
trace использует результат sum (7, 12) - число 19.
Функции используются по двум причинам. Первая - это
возможность разделить программу на более мелкие части.
Программу, состоящую из 30 строк и выполняющую три
различные задачи, можно заменить на три функции,
состоящие из 10 строк, каждая из которых выполняет свою
задачу. Это значительно облегчает работу с кодом.
Другой причиной является возможность их повторного и
неограниченного использования. Таким образом, если
определенная часть кода используется несколько раз, вы
можете поместить ее в функцию, которую затем будете
постоянно вызывать, изменяя ее входные параметры.
Исходный файл: Framelabeler.fla
Приведем пример функции, использующей в качестве
входного параметра имя метки кадра. Она выполняет две
задачи. Во-первых, помещает имя в текстовую переменную
textFrameLabel. Это текстовое
окно видно пользователю при воспроизведении ролика, оно
информирует пользователя о том, в каком кадре он
находится в данный момент. Второй задачей функции
является выполнение команды gotoAndStop - переход к
определенному кадру и остановка воспроизведения.
function gotoFrame(frameLabel)
{ franeLabelText = frameLabel; gotoAndStop
(frameLabel) ; } Функция помещается в первый кадр
главной временной шкалы вместе с командой, задающей
переход ролика к начальному кадру. Так как ролик уже
находится в первом кадре, команда gotoAndstop просто
останавливает ролик.
gotoFrame ("introduction") ; В примере
Framelabeler.fla функция содержится в первом ключевом
кадре. К каждому из пяти кадров пользователь может
перейти при помощи кнопок, расположенных в нижней части
экрана. Вместо команды gotoAndStop все кнопки обращаются
к команде gotoFrame. На рис. 2.12 показан пример ролика.
В верхнем левом углу рабочего поля находится область
динамического текста. Временно он содержит слова "frame
label". При первом обращении к функции gotoFrame они
будут заменены на "introduction".
Рисунок 2.12
Ролик состоит из пяти кадров и пяти кнопок для перехода
к каждому кадру. Текстовое окно отображает имя текущей
метки кадра
Преимущество использования одной
функции для контроля всей навигации заключается не
только в меньшем количестве нажатий на клавиши при
программировании. Предположим, что к моменту завершения
программы вы 100 раз обратились к функции gotoFrame.
Затем вы решили удалить окно textFrameLabel или немного
изменить его. Если бы вы не использовали функцию, то вам
пришлось бы удалять или изменять код в 100 местах. Но
так как все ваши навигационные кнопки используют функцию
gotoFrame, то для изменения их поведения достаточно
изменить только ее.
|