4.7. Функции AS
Прежде чем перейти, наконец, к практическим примерам применения языка ActionScript, нам необходимо еще кратко ознакомиться с основными встроенными функциями этого языка. Как уже говорилось выше, с помощью оператора function можно определять собственные функции, а затем вызывать их по имени. Но в языке ActionScript существует целый ряд встроенных функций, которые очень полезны во многих случаях.
Две самые простые функции - это true и false, возвращающие, соответственно, логические значения "истина" и "ложь". Вообще говоря, мы уже применяли их, даже не задумываясь о том, что это функции.
Далее следуют функции String, Number и Boolean, которые преобразуют свой аргумент в соответствующий тип. Например, чтобы явно преобразовать число в строку, достаточно написать примерно следующее:
q = String (q);
При этом если до выполнения функции переменная q имела, например, числовое значение 34, то после
выполнения этой функции она получит строковое значение "34".
Функция escape, принимая строку в качестве аргумента, преобразует все ее символы, не разрешенные в протоколе HTTP, в их шестнадцатеричные эквиваленты. Каждый такой символ преобразуется в три: знак процента (%) и в следующий за ним двузначный шестнадцатеричный код.
Так, если написать
b = escape("Здравствуйте!");
то в листинге переменных получим
Variable _level0.b = "%C7%E4%F0%E0%E2%F1%F2%E2%F3%E9%F2%E5%21"
Существует также функция unescape, которая выполняет противоположные действия, преобразуя строку вышеописанного формата (обычно это адрес URL) в обычный текст.
Функция getTimer возвращает количество миллисекунд, прошедшее с момента начала проигрывания ролика. В предыдущих версиях системы Flash использование этой функции было единственной возможностью контроля времени. Теперь значимость этой функции снизилась за счет возможности использования объекта Date, однако во многих случаях проще применить функцию getTimer.
Вот как можно, например, остановить в каком либо кадре анимацию на 5 секунд. Нужно создать новый слой (если еще нет слоя для сценариев), создать в этом слое ключевой кадр в нужно позиции и ввести туда такой код
a=getTimer ();
stop ();
while (getTimer() - a < 5000);
play ();
Здесь в первой строке мы запоминаем время, прошедшее с момента старта ролика до этого кадра, в переменной а. Затем мы останавливаем анимацию оператором stop и начинаем в пустом цикле сравнивать разность текущего сохраненного времени со значением 5000 миллисекунд, или 5 секунд. Через пять секунд эта разность станет равна 5000, и произойдет выход из цикла. Цикл завершается, и следующий оператор play вновь запустит анимацию.
С помощью функции getVersion можно узнать текущую версию проигрывателя Flash. Это может потребоваться, если ролик должен быть совместим со старыми версиями.
Работа с именами переменных
Функция eval трактует свой аргумент как имя переменной и возвращает значение этой переменной. Например,
если мы напишем
а = 45;
name = " а ";
b = eval ( name );
то переменной b будет присвоено значение 45. Можно сказать, что эта функция нужна для чтения значения переменной по указателю. Еще раз обратим на это внимание. Если мы присваиваем какой-либо переменной строковое значение, являющееся именем другой переменной, то эта переменная является указателем:
pnt = "vrb";
Тогда код
set (pnt, 280);
присвоит переменной значение 280. Прочитать его можно также через переменную pnt (указатель).
a = eval (pnt);
Здесь переменной а присваивается значение 280.
Другим полезным свойством функции eval является возможность работать c переменными с вычисляемым именем. Например, если у нас есть переменные с именами а1, а2, аЗ и так далее, их имена вполне можно "вычислять", составляя их из символа а и числового значения, например:
а1 = 124;
i =1;
b = eval ("a"+i);
Если мы напишем такой код и просмотрим листинг переменных, то увидим, что переменной b присвоено значение 124.
Числа, записанные как строки
Весьма полезны при математических вычислениях функции parseFloat и parselnt. Первая из них выделяет из
строки число с плавающей точкой. Например, если написать
g = parseFloat("3.57dfkglj dfgj 45 67");
Дто переменной q будет присвоено числовое значение 3,57. Как видите, эта функция ищет первый нецифровой символ, останавливая на этом выделение числа. Если строка начинается с буквы, функция parseFloat возвращает значение 0.
Функция parseInt работает аналогичным образом, однако выделяет из строки целое число. В частности, если мы возьмем строку из предыдущего примера и применим к ней функцию parseint
q = parseInt ("3.57dfkglj dfgj 45 67");
то она возвратит число 3. Эту функцию также можно применять и для выделения целой части из числа с плавающей точкой (для этих целей в предыдущих версиях Flash использовалась функция int).
Однако функция parseint имеет еще одну особенность - она может "понимать" числа, записанные в других системах исчисления. При этом в качестве второго аргумента необходимо указать основание системы исчисления. Например, если написать
q = parseInt (1011, 2);
w = parseInt ("FF" , 16);
то вот что мы увидим в листинге переменных:
Variable._level0.q = 11
Variable _level0.w = 255
Только надо иметь в виду, что при использовании в записи чисел буквенных символов (что случается при использовании систем исчисления с основанием, большим 10), такие "числа" следует заключать в кавычки (чтобы функция считала их строками). Если используются только цифровые символы, кавычки необязательны. Максимальное основание системы исчисления, которое "понимает" функция parseInt - 32.
Иногда до сих пор можно встретить устаревшую функцию random, которая возвращает псевдослучайное число. Однако для этого рекомендуется пользоваться методом Math.random.
Функции isFinite и isNaN позволяют проверить, является ли их аргументы соответственно конечным числом и не числом. Они возвращают логические значения true или false.