4.3. Переменные и указатели на переменныем

Прежде чем перейти к конкретным примерам создания сценариев ActionScript, необходимо набраться терпения и одолеть несколько разделов сухой теории.

Переменные
Поговорим об использовании переменных. Формально, переменная - это именованная область памяти для хранения конкретного значения. Для получения хранимого значения к данной области памяти можно обращаться по имени.

Например, можно определить переменную с именем х и присвоить ей значение, например, 5. Тогда впоследствии вычисление выражения 10+х даст результат 15. В процессе выполнения сценария значения переменных можно изменять.

В языке ActionScript переменные не требуют объявления. Каждая переменная создается в момент первого обращения к ней. Список существующих переменных можно увидеть в режиме просмотра ролика, нажав сочетание клавиш CTRL+ALT+V.

Оператор присваивания
Чтобы присвоить переменной значение, нужно использовать оператор присваивания =. Например, запись

x = 5;

присвоит переменной х значение 5.

Значения переменных могут быть как числовыми, так и строковыми. Строковые значения должны быть заключены в кавычки. Например, запись

a = "who are you";

присвоит переменной а строковое значение "who are you".

Рассмотрим маленький пример. Вставим в первый кадр ролика такой код

g = "lklkj";
k = 3;
u = "5 + 5";
r = 5 + 5;
q = "What" + " is this?";
sum = k + r;

Если теперь запустить просмотр ролика (CTRL+ENTER) и нажать клавиши CTRL+ALT+V, то мы увидим следующее:

Level #0:
Variable _level0. $version = "WIN 5,0,30,0"
Variable _level0.g = "lklkj"
Variable _level0.k = 3
Variable _level0.u = "5 + 5"
Variable _level0.r = 10
Variable _level0.q = "What is this?" Variable _level0.sum = 13

Как видите, поскольку все переменные созданы в основном ролике на уровне 0 (об уровнях мы рассказывали в предыдущем разделе), все они имеют префикс _level0. Все переменные имеют те значения, которые мы им присвоили. Переменная r имеет значение 10, поскольку 5 + 5 является математическим выражением, которое было вычислено перед операцией присваивания. Переменная u имеет строковое значение "5 + 5" (обратите внимание, что при присваивании мы заключили его в кавычки).

Переменной sum мы присваивали значение k + r, то есть сумму значений переменных k и r. Поскольку в момент присваивания обе эти переменные уже существовали и имели значения, соответственно, 3 и 10, программа вычислила их сумму (13) и полученное значение присвоила переменной sum. Если бы в этот момент одна из переменных еще не существовала, то она была бы создана и ей было бы присвоено значение 0.

Обратите внимание на переменную q. При ее создании мы присвоили ей значение, состоящее из «суммы» двух строк. Дело в том, что знак + по отношению к строковым переменным означает конкатенацию («склеивание» строк). Если же попытаться «сложить» число и строковое значение, число будет автоматически преобразовано в строку и после этого выполнена конкатенация. Например, если написать

k = "3";
r = 5 + 5;
sum = k + r;

то в списке переменных мы увидим следующее:

Level #0:
Variable _level0. $version = "WIN 5,0,30,0"
Variable _level0.k = "3"
Variable _level0.r = 10
Variable _level0.sum = "310"

Как видите, в данном случае переменная k имеет не числовое значение 3, а строковое - "3", Следовательно, при попытке «сложить» переменные k и r числовое значение переменной r (10) преобразуется в строку, после чего строки «склеиваются» вместе.

Вы, наверное, уже обратили внимание, что в приведенных листингах переменных присутствует также переменная $version. Эта переменная является системной и содержит номер и тип версии Flash. Вообще говоря, этой переменной можно обычным образом присвоить любое значение. Однако этого делать не рекомендуется, поскольку результатом могут стать ошибки в работе программы. Кроме того, вообще не рекомендуется использовать имена переменных, начинающиеся с символов $ и _ (подчеркивание).

Язык ActionScript позволяет работать с довольно-таки большими числами. Возможные числовые значения переменных лежат в пределах от -1,7*10308 до 1,7*10308.

Тем, кто привык работать в обычном, а не в профессиональном режиме ввода кода сценария, для задания операции присваивания следует выбрать пункт set variable из папки Actions (Действия) в левой части окна ввода сценария. Для снятия кавычек (то есть для получения числового значения или выражения) установите флажок Expression (Выражение) справа от поля Value (Значение). Указатели
Итак, теперь мы умеем пользоваться переменными. Давайте сразу же введем еще одно понятие - указатель на переменную. Тем, кто программировал на других языках, например, С, это понятие уже знакомо, а остальным советую уяснить его прямо сейчас. Не пропускайте следующие абзацы, а то впоследствии наверняка возникнет много лишних вопросов.

Указателем на переменную называется область памяти, где хранится имя данной переменной. «Тонкость» состоит в том, что для присваивания значения к переменной можно обратиться по имени указателя. В некоторых случаях эта возможность просто незаменима. Для обращения к переменной по ее указателю используется оператор set.

Приведем пример. Допустим, мы хотим присвоить значение 28 переменной х, а имя "х" у нас хранится в переменной pointer. Мы можем написать так:

pointer = "х";
set (pointer, 28);

В этом случае оператор set присвоит значение 28 переменной, имя которой хранится в переменной pointer, то есть в данном случае - переменной х.

Level #0:
Variable _level0.$veraion = "WIN 5,0,30,0"
Variable _level0.pointer = "х"
Variable _level0.x = 28

Кстати, этим способом можно создать переменную с любым, даже «запрещенным» именем. Например, если написать pointer = "6";
set (pointer, 28);

то программа создаст переменную с именем 6 и присвоит ей значение 28. Если же попытаться сделать это с помощью обычного присваивания, мы получим сообщение об ошибке. Конечно, подобные «трюки» могут пригодиться не очень часто, но знание о наличии таких возможностей может иногда оказаться полезным в самый неожиданный момент.

Чтобы ввести оператор set в обычном режиме, выберите пункт set variable, как и в предыдущем случае, но при этом установите флажок Expression (Выражение) справа от поля Variable (Переменная).

Назад
Компьютерная графика © 2014 ОСУ ИК Вход