Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг
Шрифт:
Интервал:
Закладка:
Переменная может также быть связана с редактируемым текстом. В данном случае при изменении переменной соответственно изменяется содержимое текстового окна и наоборот. В следующем уроке мы рассмотрим функции, а также пример динамического текстового окна.
Урок 13. Создание функций
Функция – это часть кода, которая может быть использована многократно. Вы можете передавать в нее несколько значений и получать из нее новые. Примером является функция, выдающая сумму двух чисел. Вот как она будет выглядеть в ActionScript:
function sum(a, b) {
c = a + b;
return c;
}Обычно функции помещаются в сценарии кадра главной временной шкалы. Функция задается при помощи ключевого (зарезервированного) слова function. Затем указывается имя функции, за которым следуют круглые скобки и открытая фигурная скобка {. Круглые скобки могут быть пустыми или содержать список переменных, задаваемых при вызове функции. Эти переменные называются параметрами функции (или аргументами). Например, предыдущая функция может быть вызвана следующим образом:
trace (sum(7, 12));
Результатом обращения к функции будет число 19, помещаемое командой trace в окно Output. При обращении к функции sum значение 7 передается в функцию как переменная а, а значение 12 – как переменная b. После выполнения функции команда return посылает значение c обратно к sum. Таким образом, для выполнения своей функции команда trace использует результат sum(7, 12) – число 19.
Функции используются по двум причинам. Первая – это возможность разделить программу на более мелкие части. Программу, состоящую из 30 строк и выполняющую три различные задачи, можно заменить на три функции, состоящие из 10 строк, каждая из которых выполняет свою задачу. Это значительно облегчает работу с кодом.
Другой причиной является возможность их повторного и неограниченного использования. Таким образом, если определенная часть кода используется несколько раз, вы можете поместить ее в функцию, которую затем будете постоянно вызывать, изменяя ее входные параметры.Исходный файл: Framelabeler.fla Приведем пример функции, использующей в качестве входного параметра имя метки кадра. Она выполняет две задачи. Во-первых, помещает имя в текстовую переменную textFrameLabel. Это текстовое окно видно пользователю при воспроизведении ролика, оно информирует пользователя о том, в каком кадре он находится в данный момент. Второй задачей функции является выполнение команды gotoAndStop – переход к определенному кадру и остановка воспроизведения.
function gotoFrame(frameLabel) {
frameLabelText = frameLabel;
gotoAndStop(frameLabel);
}Функция помещается в первый кадр главной временной шкалы вместе с командой, задающей переход ролика к начальному кадру. Так как ролик уже находится в первом кадре, команда gotoAndStop просто останавливает ролик.
gotoFrame(«introduction»);
В примере Framelabeler.fla функция содержится в первом ключевом кадре. К каждому из пяти кадров пользователь может перейти при помощи кнопок, расположенных в нижней части экрана. Вместо команды gotoAndStop все кнопки обращаются к команде gotoFrame.
На рис. 2.12 показан пример ролика. В верхнем левом углу рабочего поля находится область динамического текста. Временно он содержит слова "frame label". При первом обращении к функции gotoFrame они будут заменены на «introduction».
Рисунок 2.12. Ролик состоит из пяти кадров и пяти кнопок для перехода к каждому кадру. Текстовое окно отображает имя текущей метки кадраПреимущество использования одной функции для контроля всей навигации заключается не только в меньшем количестве нажатий на клавиши при программировании. Предположим, что к моменту завершения программы вы 100 раз обратились к функции gotoFrame. Затем вы решили удалить окно textFrameLabel или немного изменить его. Если бы вы не использовали функцию, то вам пришлось бы удалять или изменять код в 100 местах. Но так как все ваши навигационные кнопки используют функцию gotoFrame, то для изменения их поведения достаточно изменить только ее.
Урок 14. Массивы
Никакое введение в язык программирования не было бы полным без рассмотрения массивов. Хотя множество простых операций может быть выполнено без применения массивов, человек, не умеющий работать с массивами, не может считаться настоящим программистом.
Массив является разновидностью переменной. Переменные, которые вы использовали до сих пор, могут содержать одно значение: число или строку. Массив может содержать ни одного, одно и больше значений. Вот как выглядит массив:
myArray = ["Apple", «Orange», «Peach», «Plum»];
Для обращения к элементу массива используется специальный синтаксис:
myItem = myArray[1];
Переменная myItem будет иметь значение «Orange», так как отсчет положений в массивах, так же как и в строках, начинается с 0. Несложно догадаться, что массивы применяются для хранения множества однотипных данных. Для выполнения операций над массивами предназначено несколько функций. Прежде всего, давайте рассмотрим, как создаются массивы. Это можно сделать несколькими способами. До сих пор мы рассматривали только способ, при котором все элементы массива задаются сразу. Вы также можете создать пустой массив и добавлять в него элементы:
myArray = new Array();
myArray.push("Apple");
myArray.push("Orange");
myArray.push("Peach");
myArray.push("Plum");Первая строка данного кода создает пустой массив. Каждая из следующих четырех строк добавляет в массив один элемент при помощи команды push. По сравнению со способом «все сразу» данный способ кажется более сложным, однако он незаменим при построении массивов, все элементы которого не известны заранее. Например, вы можете позволить пользователю ввести данные, а затем добавить их в массив. Длину массива можно узнать так же, как и длину строки:
myLength = myArray.length;
Вы уже знаете, как получить доступ к отдельному элементу массива при помощи квадратных скобок. Используя команду pop, вы сможете взять из массива значение последнего размещенного там элемента. При этом из массива он удаляется. В нашем примере мы передаем его в окно Output. Следующий сегмент кода добавляет в массив четыре элемента, а затем, используя цикл while, удаляет конечные элементы массива и перемещает их в окно Output:
myArray = new Array();
myArray.push("Apple");
myArray.push("Orange");
myArray.push("Peach");
myArray.push("Plum");
while (myArray.length>0) {
trace(myArray.pop());
}Первой строкой в окне Output является «Plum», последней – «Apple», так как команда pop берет элементы в порядке, обратном помещению элементов массива (стековая схема: последний вошел, первый вышел – First In Last Out). Массивы можно упорядочить. В случае, если элементами массива являются числа, Flash упорядочит их в цифровой последовательности. Если это строки, они будут упорядочены по алфавиту:
myArray = new Array();
myArray.push("Peach");
myArray.push("Orange");
myArray.push("Apple");
myArray.push("Plum");
myArray.sort();
trace(myArray.toString());Обратите внимание на последнюю строку кода, которая содержит функцию toString для приведения массива к виду, пригодному для отображения в окне Output, то есть преобразует все элементы массива в строку. При помощи данной функции вы можете убедиться в том, что массив соответствует вашим требованиям. Наконец, функция splice позволяет удалять один или несколько элементов из массива:
myArray = [(«Apple», «Orange», «Peach» «Plum»]; myArray.splice(2,1);
Команда splice может выполнять несколько функций. В данном примере она содержит два параметра. Первый задает позицию, с которой начинается удаление элементов (считая от 0!), второй – количество удаляемых элементов. В нашем случае будет удален элемент «Peach», находящийся в позиции 2. Изменив второй параметр на 2, вы удалите и «Peach» и «Plum». Убрав второй параметр, вы удалите все элементы массива. Функция splice используется также для добавления элементов. Добавляемый элемент задается третьим параметром:
myArray = [(«Apple», «Orange», «Peach», «Plum»]; myArray.splice(2,1, "Pear");
В данном примере удаляется элемент «Peach», а его место занимает элемент «Pear». Четвертый и последующие параметры используются для добавления второго и более элементов. В случае, если значение второго параметра окажется равно 0, никакие элементы удалены не будут. Теперь, когда у вас есть представление об основах ActionScript, самое время применить эти знания для создания вполне профессиональных фрагментов Flash-роликов. В следующей главе мы создадим несколько подобных фрагментов, и затем, начиная с главы 5 "Создание визуальных эффектов", приступим к написанию целых программ.
Глава 3 Элементы ActionScript для создания игр
• Урок 15. Контроль воспроизведения клипа
• Урок 16. Управление свойствами клипа
• Урок 17. Применение метода "Перетащи и положи" к клипам
• Урок 18. Клипы и уровни
• Урок 19. Копирование клипов
• Урок 20. Управление несколькими клипами
• Урок 21. Пересечение объектов