Macromedia Flash Professional 8. Графика и анимация
Шрифт:
while (<Условиe>)
<Тело цикла>
Для создания цикла с постусловием используется ключевое слово while. Поэтому такие циклы называют еще "циклами while" (не путать с "циклами do-while"!).
Пример цикла с предусловием:
while (а < 100) {
а = а * i + 2;
i = ++i;
}
Иногда бывает нужно прервать выполнение цикла. Для этого Flash предоставляет программистам действия break и continue.
Действие break
while (а < 100) {
а = а * i + 2;
if (а > 50) break;
i = ++i;
}
В этом примере мы прерываем выполнение цикла, если значение переменной а превысит 50.
Собственно, мы уже знакомы с действием break. Оно использовалось в выражении выбора, где вело себя точно так же.
Действие continue позволяет перезапустить цикл, т. е. оставить невыполненными все последующие выражения, входящие в тело цикла, и запустить выполнение цикла с самого его начала: проверка условия, приращение счетчика и выполнение тела и т. д.
while (а < 100) {
i = ++i;
if (i > 9 && i < 11) continue;
a = a * i + 2;
}
Здесь мы пропускаем выражение вычисления а для всех значений i от 10 до 20.
Функции
Функция — это особым образом написанный и оформленный фрагмент кода ActionScript, который можно вызвать из любого места любого сценария. Фактически функция — это повторно используемый участок кода, который, будучи написанным один раз, может быть вызван где угодно, кем угодно и сколько угодно раз. Так что, если какой-то фрагмент кода встречается в нескольких местах вашего сценария или сценариев, лучше всего оформить его в виде функции.
Собственно код, ради которого и была создана функция, называется телом функции. Каждая функция, кроме того, должна иметь уникальное имя, по которому к ней можно будет обратиться. Функция также может принимать один или несколько параметров и возвращать результат, который можно использовать в выражениях.
Объявление функций
Прежде чем функция будет использована где-то в сценарии, ее нужно объявить. Объявление функции выполняется с помощью ключевого слова
function.
function <Имя>([<Список параметров, разделенных запятыми>])
<Тело функции>
Имя функции, как уже говорилось, должно быть уникально в пределах ее области видимости. Для имен функций действуют те же правила, что и для имен переменных.
Список параметров представляет собой набор переменных, в которые при вызове функции будут помещены значения переданных ей параметров. Мы можем придумать для этих переменных любые имена — все равно они будут использованы только внутри тела функции. Это так называемые формальные параметры функции.
Список параметров функции помещается в круглые скобки, а сами параметры отделяются друг от друга запятыми.
В пределах тела функции над принятыми ею параметрами (если они есть) и другими данными выполняются некоторые действия и, возможно, вырабатывается результат. Чтобы вернуть результат из функции в выражение, из которого она была вызвана, используется действие return:
return <Переменная или выражение>;
Здесь переменная должна содержать возвращаемое значение, а выражение должно его вычислять.
Пример объявления функции:
function divide(а, b) {
var с;
с = а / b;
return с;
}
Данная функция принимает два параметра — а и b, — после чего делит а на b и возвращает частное от этого деления. При этом для хранения промежуточного результата она использует собственную (так называемую локальную) переменную с. Такие переменные "видимы" только внутри тела этой функции. При завершении выполнения функции значения всех локальных переменных теряются.
В случае локальных переменных также действует правило "своя переменная ближе к телу" (в данном случае — телу функции). То есть если существуют две переменные с одинаковыми именами, одна — уровня клипа, другая — локальная, то при обращении по этому имени будет получен доступ к локальной переменной. Одноименная переменная уровня клипа будет "замаскирована" своей локальной "тезкой".
Функции, объявленные в сценариях, привязанных к кадрам, кнопкам и вложенным клипам текущего клипа, "видимы" только в пределах этих сценариев (функции уровня клипа). Чтобы сделать функцию доступной во всех сценариях фильма (определить ее как глобальную), нужно использовать модификатор _globai:
function _global.glDivide(a, b) { return a / b; }
Вызов функций
После того как мы объявили функцию, мы можем вызвать ее из любого места кода в пределах области видимости. Для этого используется следующий формат:
<Имя функции>([<Список фактических параметров, разделенных запятыми>])
Здесь указывается имя нужной функции и в круглых скобках перечисляются фактические параметры, над которыми нужно выполнить соответствующие действия. Функция вернет результат, который можно присвоить переменной или использовать в сложном выражении.
При вызове функции подставляйте именно фактические параметры, а не формальные, использованные в объявлении функции.
Вот пример вызова объявленной нами выше функции divide:
d = divide(3, 2);
Здесь мы подставили в выражение вызова функции фактические параметры — константы 3 и 2.
s = 4* divide (х, r) + у;
А здесь мы выполняем вызов функции с переменными в качестве фактических параметров.