Объекты Macromedia Flash похожи на объекты реального мира. Каждый тип объектов Flash соответствует тем или иным надобностям вашего Flash-приложения. В этом уроке мы познакомим вас с объектами Flash и поможем вам получить опыт их применения.
В этом уроке:
ColorKeyString и Selection
Этот текстовый редактор, созданный во Flash, станет одним из проектов, которые мы создадим в этом уроке
На выполнение этого урока требуется примерно 45 минут.
Файлы-носители:
Нет
Стартовые файлы:
Lesson04/Assets/Clown1.fla Lesson04/Assets/balloon1.fla Lesson04/Assets/wordProcessor1.fla
Законченные проекты:
lesson4/completed/Clown2.fla lesson4/completed/balloon2.fla lesson4/completed/wordProcessor2.fla
Вообразите на минутку, что вы – плотник. При постройке дома вам придется воспользоваться некоторыми готовыми объектами. Чтобы сколотить дверную раму, вам понадобится несколько брусьев, молоток и пригоршня гвоздей – все это объекты, обладающие определенными свойствами, которые дают возможность выполнить вашу работу. Порой вы даже не очень представляете себе, как именно работает объект (ну, взять хоть бетономешалку) – вы "даете" объекту некий материал, а он выдает вам нечто совсем другое.
Такой же смысл и у объектов Flash: это элементы, используемые особым способом для построения приложения или выполнения определенной задачи. Считайте, что объекты – это инструменты и строительные материалы для вашего проекта.
В
Объектам присущи атрибуты двух основных разновидностей: свойства и методы. Рассмотрим подробнее то и другое.

Многие (хотя и не все) объекты имеют свойства – набор переменных, представляющих характеристики объекта. Например, в реальном мире автомобиль обладает такими свойствами, как цвет, марка, модель, мощность и так далее. Если бы этот автомобиль был объектом
car.color = "red"; car.make = "Volkswagen"; car.model = "Beetle"; car.horsepower = 100;
Во Flash различные объекты могут иметь разные свойства. Например, объект обладает свойствами, определяющими его прозрачность, видимость, позиции по горизонтали и вертикали, угол поворота и еще многими. Изменение какого-либо из этих свойств влияет на внешний вид фильма-символа или его поведение, – так же, как влияет на автомобиль покраска или замена двигателя. В своих скриптах вы можете в любое время использовать или изменить значения свойств объектов. Предположим, в вашем проекте автомобиль должен перемещаться со скоростью, зависящей от мощности его двигателя. Соответствующая строка скрипта могла бы выглядеть так:
speedFactor = car.horsepower;
Давайте рассмотрим еще один пример использования свойств объекта в
String (строка). Например,
name = "Flash"; lengthOfName = name.length;
В первой строке этого кода создается переменная с именем name, которая получает значение lenghtOfName, и ей присваивается значение свойства length объекта name (которое равно 5). Названия свойств фильма-символа обычно начинаются с символа подчеркивания ( _alpha, _rotation и так далее), однако это не является общим правилом для названий свойств объектов. Дело в том, что этот обычай перекочевал из Flash 4; тогда свойства только еще вводились и
Примечание Свойства объектов бывают разных типов – это могут быть переменные, массивы и даже другие объекты.
Метод представляет собой задачу, которую способен выполнять объект. Если считать видеомагнитофон объектом, то к его методам будут относиться воспроизведение, запись,
play(); rewind(); record();
Чтобы вызвать метод объекта, нужно сначала указать сам объект (или имя экземпляра объекта – что это значит, мы сейчас объясним), затем ставится точка, затем – имя метода:
myVCR.record();
Это будет указание объекту с именем myVCR начать запись.
Скобки, стоящие после имени объекта, могут заключать в себе параметр или набор параметров. Параметры – это сведения, позволяющие методу выполнить свою задачу некоторым определенным образом. Вновь используем в качестве примера видеомагнитофон. Допустим, вы хотите записать телепередачу по 8 каналу с 10 до 11 часов 9 сентября. Скрипт для выполнения такой задачи мог бы выглядеть так:
myVCR.record (8, 10:00, 11:00, September 9);
Как видите, параметры метода отделены друг от друга запятыми. Значения параметров могут быть заданы прямо (как в приведенном примере), либо в качестве значений параметров можно подставить динамические значения – скажем, переменные. В качестве параметра можно даже использовать другой метод.
Многие объекты stop() объекта просто останавливает воспроизведение монтажного стола – тут нечего ни прибавить, ни убавить.
Каждый тип объекта имеет уникальный набор методов – оно и понятно, ведь все объекты выполняют специфические задачи.

Методы объектов в
В этом уроке мы продемонстрируем некоторые из этих задач, а еще много больше – в ходе всего курса.
Примечание Объект не обязательно должен содержать свойства и методы. Однако какое применение мог бы найти объект без свойств и методов?
Объекты организованы по классам, которые представляют собой группы объектов, имеющих схожие свойства и методы. В реальном мире автомобили представляют собой один класс объектов, а рыбы, книги, даже люди – другие классы. Каждый из 6 миллиардов людей на этой планете может рассматриваться как экземпляр класса Человек. Хотя каждый человек уникален, всем людям присущи схожие свойства (имя, возраст, цвет волос, рост и тому подобное) и виды деятельности (дыхание, ходьба, осязание, зрение и так далее). Поскольку каждый новый созданный вами экземпляр фильма-символа является экземпляром объекта

Практически любой проект содержит по нескольку экземпляров одного , о котором мы только что говорили, или объекта String (ведь проект может содержать много разных String ). Другие объекты являются универсальными, или глобальными – это значит, что проект может содержать лишь один экземпляр такого объекта. Таков, например, объект (мышь), который, помимо прочего, управляет "видимостью" указателя. Поскольку указатель может быть только один, вы не можете создать несколько экземпляров мыши, а можете лишь использовать присущие этому объекту методы.
Создать экземпляр объекта можно двумя способами. Чтобы создать новый экземпляр объекта , достаточно поместить на сцену фильм-символ. Однако такой способ пригоден лишь для некоторых (немногочисленных) типов объектов. Для создания экземпляров объектов других типов необходимо использовать конструктор – это довольно простая строка кода, приказывающая Flash создать новый экземпляр определенного объекта. Конструктор выглядит так:
имяЭкземпляра = new имяОбъекта();
Так, если мы хотим создать экземпляр объекта (звук), конструктор будет примерно таким:
mySoundInstance = new Sound();
Каждый раз, создавая экземпляр объекта, вы должны присваивать ему имя, уникальное для данного проекта. Это позволит изменить свойство или вызвать метод, соответствующий конкретному экземпляру – в последующих примерах мы это продемонстрируем. Поднабравшись опыта в программировании, вы поймете, когда следует использовать конструкторы.
Примечание Для имен объектов действуют те же ограничения, что и для имен переменных; то есть имена не должны содержать пробелов,
Совет Во Flash вы можете присоединять к имени объекта специальные суффиксы, способствующие получению подсказок в панели Действия. Например, вы можете назвать экземпляр фильма-символа myMovieClip, а можете с myMovieClip_mc. В последнем случае панель Действия будет понимать, что это имя соответствует объекту определенного типа и при вводе скриптов вы будете получать раскрывающийся список, содержащий имена всех свойств и методов, присущих этому объекту. Полный список суффиксов вы можете найти в Словаре
В списке панели Действия, в разделе Objects, вы сможете найти все объекты Flash. Они разбиты по следующим подразделам:
Далее приводится описание многих классов объектов
Данный объект содержит неизменяемую информацию (только для чтения) о том, может ли компьютер пользователя использовать
Accessibility.isActive();
Приведенная строка true либо false. Если результат – true, значит, компьютер пользователя может использовать
Массив ( array ) есть "приспособление" для хранения совокупности однородных данных. Размещение информации в массиве и доступ к ней осуществляется посредством индексной системы. Например:
cakeType = new Array(); cakeType[0] = "Chokolate"; cakeType[1] = "Angel Food"; cakeType[2] = "Baked Alaska";
В первой строке этого скрипта с помощью конструктора создается новый массив строк (экземпляр объекта Array ) с именем cakeType. Следующие строки помещают данные в этот массив.
Объект Array располагает многими полезными методами, которые позволят вам добавить, удалить и отсортировать элементы массива.
Примечание Подробнее о массивах смотри Урок 7 – Работа с динамическими данными.
Объект (логический) хранит одно из двух значений – true или false. Создать экземпляр объекта можно с помощью конструктора либо оператором присвоения ( = ). Например, скрипты
toggle = new Boolean(false);
или
toggle = false;
создают один и тот же объект.
Помещая на сцену кнопку, вы создаете экземпляр объекта Button. Подобным образом можно создать только еще два типа объектов – (фильм-символ) и TextField (текстовое поле). Объект Button содержит свойства и методы, позволяющие управлять внешним видом кнопки, функциональностью, порядком переноса фокуса и многим другим.
Этот объект содержит информацию о компьютере пользователя – о разрешении экрана, о том, может ли компьютер воспроизводить звук и тому подобное. Следующая строка myVariable значение разрешения экрана пользователя по горизонтали:
myVariable = System.capabilities.screenResolutionX;
Совет Возможность доступа к этой информации позволяет создавать фильмы, способные автоматически подстраиваться к возможностям компьютера пользователя. Например, можно определить, не открыт ли фильм на портативном компьютере – и если это так, переадресовать пользователя на страницу, разработанную специально для
Этот объект используется для динамического изменения цвета фильмов-символов. Создавая объект Color, вы указываете ему на определенный фильм-символ. Затем, с помощью методов объекта Color, вы можете управлять цветом фильма-символа. Объект Color создается при помощи конструктора, например:
myColor = new Color(путьКМонтажномуСтолу);
Позднее в этом уроке мы выполним упражнение с использованием объекта Color.
С помощью этого объекта фильму становится доступна информация о текущем времени (местном или по Гринвичу), а также текущая дата – день, месяц и год. Для создания объекта Date следует использовать конструктор. Следующий пример демонстрирует использование объекта Date:
now = new Date(); largeNumber = now.getTime();
Этот скрипт создает переменную с именем largeNumber, значением которой станет число миллисекунд, прошедших с полуночи 1 января 1970 года до текущего момента.
Примечание Подробнее об использовании объекта Date смотри Урок 15 – Привязка динамики к времени или кадрам.
Объект Key используется для определения состояния клавиатуры – например, можно узнать, не нажата ли клавиша
В этом уроке мы выполним упражнение с использованием этого объекта.
Flash позволяет загружать в фильм данные (например, переменные) из внешних источников. Используя объект LoadVars, Flash загружает данные в переменные с указанного URL (это может быть и статичный текстовый файл). Например:
myOb = new LoadVars();
myOb.load("http://www.mysite.com/myFiles/file.txt");
В приведенном примере все загруженные переменные становятся свойствами экземпляра .
Объект Math – это набор Math:
positiveNumber = Math.abs(-6);
Приведенный скрипт использует метод (вычисление абсолютного значения, или модуля) объекта Math для преобразования отрицательного числа в положительное.
Объект (мышь) управляет отображением указателя (курсора), а также позволяет создавать слушатели для отслеживания активности мыши. Вот пример его использования:
Mouse.hide();
Эта строка скрипта скрывает указатель мыши. Мышь остается активной, просто указатель не отображается на экране.
Наверное, это наиболее знакомый вам объект. Его экземпляры создаются в среде разработки (путем помещения их на сцену) либо с помощью createEmptyMovieClip() и duplicateMovieClip(). Фильмы-символы имеют множество свойств и методов, которые часто используются в интерактивных проектах. Пример использования:
myClip.gotoAndStop("Menu");
Этим скриптом экземпляр фильма-символа с именем myClip переводится к кадру с меткой
Экземпляр объекта Number можно создать с помощью конструктора либо присвоив переменной числовое значение. Например:
age = new Number(26); или эквивалентное действие: age = 26;
Конструктор new Number() используется редко, поскольку простое присваивание числового значения проще, а результат один и тот же.
Нет, это не опечатка: существует тип объектов под названием Object! Этот объект известен как родовой, или корневой объект
Синтаксис использования родового объекта таков:
names = new Object(); names.cat = "Hayes";
В первой строке скрипта создается новый объект под названием names. Вторая строка добавляет в новый объект переменную с именем . Эта переменная станет свойством объекта.
В Уроке 6 – Создание и модификация объектов – мы научим вас создавать собственные объекты (это лучше, чем просто использовать родовой объект!), а также свойства и методы для них. Тогда вы сможете создавать объекты, точно соответствующие вашим нуждам.
Объект Selection (выделение) позволяет получить информацию (или набор характеристик) о выделенных элементах вашего фильма, особенно это полезно при работе с текстовыми полями. Когда курсор установлен в текстовом поле, говорят, что это поле находится "в фокусе". Объект Selection можно использовать для того, чтобы установить фокус в определенное текстовое поле, чтобы определить, какое поле находится в фокусе в данный момент, даже для того, чтобы Selection:
Selection.setFocus("firstName");
Этот скрипт устанавливает в фокус экземпляр текстового поля для ввода с именем
В этом уроке мы выполним упражнение с использованием этого объекта.
Объект используется для управления воспроизведением звукозаписей – например, установки громкости, настройки баланса между правым и левым каналами. Узнать больше об этом объекте вы сможете из Урока 16 – Программирование звукозаписей.
Объект String предназначен для получения информации о String или путем присвоения переменной строкового значения – последовательности символов, заключенной в кавычки. Например:
bird = new String("Robin");
или, что то же самое:
bird = "Robin";
В этом уроке мы выполним упражнение с использованием этого объекта.
Объект позволяет получать информацию о характеристиках сцены и управлять ими (например, выравниванием). Вот пример:
Stage.height
Эта строка скрипта возвращает высоту сцены в пикселях.
Этот объект содержит данные о системе пользователя – такие, как тип операционной системы, используемый язык, а также все свойства объекта . Одним из свойств объекта System является строка под названием serverString, которая содержит список возможностей системы (объединенных в одну строку). Этот список можно переслать на сервер, с тем, чтобы сохранить или использовать эту информацию. Синтаксис доступа к этой строке таков:
System.capabilities.serverString
С помощью этого объекта можно динамически создать новое текстовое поле и управлять большинством его характеристик – например, установить формат текстового поля или прокрутку текста. Чтобы создать экземпляр этого объекта, нужно поместить на сцену текстовое поле либо создать его динамически при помощи действия createTextField(). В этом уроке мы будем использовать этот объект.
Объект TextFormat используется для форматирования текста, отображаемого в текстовых полях. Создав объект TextFormat, вы должны применить его к текстовому полю, используя методы setTextFormat() или setNewTextFormat() объекта TextField:
nameOfTextField.setTextFormat(nameOfFormatObject);
XML – один из наиболее популярных стандартов форматирования данных, что не удивительно – многие приложения способны обмениваться данными в формате XML. Во Flash вы имеете возможность создать объект для хранения документа в формате XML. Документ, загруженный в XML-объект, можно переслать другому XML-объекту или приложению. Пример использования объекта XML:
myXML = new XML();
myXML.load("myFile.xml");
Приведенный здесь скрипт создает новый объект XML и загружает в него файл в формате XML.
Flash позволяет также установить постоянное соединение с создаются при помощи конструктора. Вот пример использования объекта :
mySocket = new XMLSocket();
mySocket.connect("http://www.electrotank.com", 8080);
Приведенный здесь скрипт создает новый объект , а затем открывает соединение с вы найдете в Уроке 12 – Применение XML во Flash, там же имеется упражнение, которое позволит вам создать свое собственное чат-приложение.
Мы не можем в этой книге описать подробно каждый тип объектов. Однако в ходе курса мы с вами будем использовать многие из этих объектов различными способами, при этом вы получите детальные сведения о том, как и почему мы это делаем. В следующем упражнении мы сконцентрируемся на одном из объектов, чтобы дать вам общее представление об использовании объектов.
Чтобы использовать объект Color, нужно сначала создать его при помощи конструктора. Синтаксис создания нового объекта типа Color следующий:
myColor = new Color(shirt);
Приведенная строка Color с именем myColor и связывает его с экземпляром фильма-символа, имеющим имя shirt.

Объект может быть создан где угодно, и конструктор может иметь один параметр – путь к фильму-символу, который он должен модифицировать. Если нужно создать объект Color внутри того самого фильма-символа, на который он должен будет воздействовать, следует использовать в качестве пути this. Например, так:
myColor = new Color(this);
Созданный таким образом экземпляр объекта Color будет изменять цвет того экземпляра фильма-символа, который содержит скрипт.
Примечание. Вы можете создать много разных объектов Color (так же, как прочих объектов, создаваемых конструктором) и ассоциировать их с разными монтажными столами, получив возможность динамически управлять цветом многих экземпляров одновременно.
Наиболее часто используемый метод объекта Color – метод setRGB(), изменяющий цвет экземпляра фильма-символа, указанного в качестве параметра при создании объекта. Вот пример использования метода setRGB():
myColor = new Color(shirt); myColor.setRGB(0xFF3300);
Приведенный здесь скрипт создает новый объект Color с именем myColor, затем, используя метод setRGB(), цвет экземпляра фильма-символа shirt изменяется на красный. Этот метод имеет параметр – (0x), за которым следует шестнадцатеричное число – код цвета. Параметр 0x – зарезервированная комбинация символов, показывающая Flash, что здесь следует шестнадцатеричное число.
Числовая система, которой мы привыкли пользоваться, называется десятичной, или, как еще говорят, с основанием 10; в ней для выражения любых чисел используется десять цифр (от нуля до девятки). Все прочие числа (28; 6403; 496; 300; 439 и так далее) можно записать в виде комбинации этих десяти цифр. В программировании применяется также шестнадцатеричная система (с основанием 16); в ней для записи чисел используются, помимо цифр от 0 до 9, еще и буквы от A до F. Записанное в шестнадцатеричной системе число 00 соответствует десятичному 0, а шестнадцатеричное число FF – десятичному 255.

Впрочем, чтобы описать тот или иной цвет для метода setRGB(), совершенно не обязательно знать его шестнадцатеричный код. Зная десятичные значения RGB для нужного цвета, вы можете, динамически преобразовать их в шестнадцатеричный код – с помощью объекта Number и функции parseInt() ; в следующем упражнении мы покажем, как это сделать.
В данном упражнении мы создадим несложную интерактивную сцену, в которой можно будет, нажав несколько кнопок, изменить цвет волос клоуна.
Графическое содержание уже создано и размещено на сцене, так что мы можем сосредоточить все внимание на программировании изменения цвета фильма-символа. На основном монтажном столе три слоя: Background (фон), Clown Hair (волосы клоуна) и Buttons (кнопки).
Слой Clown Hair содержит экземпляр фильма-символа с именем hair. Цвет этого экземпляра мы и будем менять при помощи
В слое Buttons имеется пять круглых цветных кнопок. К этим кнопкам мы присоединим скрипты, изменяющие цвет волос клоуна.
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0xCC0000);
}
Этот скрипт дает Flash указание, когда кнопка будет отпущена после нажатия, создать новый объект Color с именем hairColor и связать этот объект с экземпляром фильма-символа hair. Во второй строке используется метод setRGB() для изменения цвета объекта Color (а следовательно, экземпляра hair ), на CC0000 – это шестнадцатеричное значение соответствует красному цвету, как раз такому, каким окрашена кнопка.
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0xFFCC00);
}
Скрипт идентичен тому, что мы присоединили к красной кнопке, изменился лишь код цвета в методе setRGB() – на сей раз значение соответствует желтому цвету.
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0x009900);
}
Цвет зеленой кнопки кодируется как 009900, и это значение использовано на этот раз в методе setRGB().
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0x336699);
}
То же, что и для трех предыдущих кнопок – создается объект Color, который меняет цвет экземпляра фильма-символа hair.

Что ж, давайте проверим нашу работу!
Каждый раз при щелчке на какой-либо из кнопок Flash создает новый объект типа Color и связывает его с экземпляром фильма-символа hair. Затем используется метод setRGB() объекта Color, и цвет этого экземпляра изменяется.
Примечание В этом упражнении объект Color заново создается каждой кнопкой, хотя на самом деле это излишне – объект, будучи однажды создан, становится частью монтажного стола. Любые дальнейшие изменения этого объекта можно сделать при помощи доступных ему методов.
А теперь давайте запрограммируем случайный выбор цвета волос клоуна.
on (release) {
R = random(256);
G = random(256);
B = random(256);
colorHexString = R.toString(16)+G.toString(16)+B.toString(16);
colorHex = parseInt(colorHexString,16);
hairColor = new Color(hair);
hairColor.setRGB(colorHex);
}
Во Flash существует два способа программного описания цвета: переменными RGB ( red, green, blue – красный, зеленый, синий) или в виде шестнадцатеричного числа. Существует три отдельных переменных RGB, каждая из которых может принимать числовые значения от 0 до 255. Например, чистый красный цвет описывается RGB-переменными так: R=255, G=0, B=0. Соответствующее шестнадцатеричное число, кодирующее тот же самый цвет – FF0000. Смысл первых пяти строк этого скрипта заключается в генерировании случайных значений RGB и преобразовании их в шестнадцатеричное число. Затем (в последней строке скрипта) полученное число используется в качестве параметра метода setRGB().
Итак, в трех первых строках скрипта создаются переменные R, G и B, которые получают случайные значения в диапазоне от 0 до 255. В следующей строке применен метод toString() объекта Number – для преобразования десятичного числа в шестнадцатеричное. Предположим, переменным R, G и B были присвоены следующие случайные значения:
R = 45 G = 202 B = 129
Следующая строка скрипта гласит: следует преобразовать значение R в шестнадцатеричное, затем преобразовать его в G и B. С помощью оператора + преобразованные значения соединяются, и в итоге переменная colorHexString получает строковое значение "2DCA81". Его необходимо преобразовать в шестнадцатеричное число, чтобы использовать как параметр метода setRGB(). Для этого, как видите, применена функция parseInt().
Ну, и в последних двух строках скрипта создается новый объект Color, связанный с экземпляром фильма-символа hair, а затем применяется цвет, закодирован созданным нами случайным числом.
Примечание Подобным образом можно получить (генерировать) с помощью
Как видите, цвет экземпляра фильма-символа hair меняется случайным образом! Вы можете даже модифицировать эту "технологию", чтобы менялся случайным образом лишь оттенок цвета – в определенном диапазоне.
Теперь вы знаете, как в любое время изменить цвет любого экземпляра фильма-символа.
Объект Key – очень полезный инструмент, позволяющий отслеживать события клавиш (то есть, взаимодействие пользователя с клавиатурой). С помощью объекта Key вы сможете:
Объект Key – глобальный, а это значит, что вы не можете создать несколько экземпляров его. Чаще всего этот объект применяется для определения нажатия той или иной клавиши. Синтаксис этой операции таков:
Key.isDown(Key.TAB);
В приведенной здесь строке используется метод isDown() объекта Key для определения нажатия на клавишу. Этот метод возвращает результат true либо false. В качестве параметра метода isDown() можно указать либо имя клавиши в объекте Key, либо числовой код этой клавиши. Например, для клавиши Tab можно указать имя – Key.TAB, либо число 9 – код этой клавиши в таблице
Key.isDown(9);
В следующем несложном упражнении мы будем перемещать по экрану воздушный шар – с помощью клавиатуры и объекта Key.
Фильм содержит два слоя: Background и

onClipEvent (load) {
speed = 3;
}
К концу этого упражнения мы запрограммируем возможность перемещения шара при помощи клавиш-стрелок. При каждом нажатии на клавишу шар будет перемещаться в определенном направлении. Этот же скрипт выполняется при загрузке экземпляра фильма-символа и устанавливает значение переменной
onClipEvent (enterFrame) {
if (key.isDown(key.RIGHT)) {
_x += speed;
} else if (key.isDown(key.LEFT)) {
_x -= speed;
}
}
В этом скрипте применен обработчик события enterFrame, который содержит Key.RIGHT – это ссылка на клавишу-стрелку "вправо", а key.LEFT, соответственно, "влево". Вот как происходит выполнение скрипта. При нажатии на клавишу "вправо" к текущей горизонтальной координате экземпляра фильма-символа прибавляется значение (шар перемещается вправо). Если же клавиша-стрелка "вправо" не нажата, то эта часть скрипта игнорируется и выполняется следующая секция – если нажата клавиша "влево", то из текущей горизонтальной координаты экземпляра фильма-символа вычитается значение (шар перемещается влево).

if (key.isDown(key.UP)) {
_y -= speed;
} else if (key.isDown(key.DOWN)) {
_y += speed;
}
Скрипт очень похож на предыдущий. Однако здесь оператор if проверяет нажатия на клавиши-стрелки "вверх" и "вниз". В первой части этого оператора проверяется, не нажата ли клавиша "вверх", и если это так, из текущей вертикальной координаты экземпляра фильма-символа вычитается значение (шар перемещается вверх). Если же нажата клавиша "вниз", то к текущей вертикальной координате экземпляра фильма-символа прибавляется значение (шар перемещается вниз).
Условия, которые мы запрограммировали, проверяются при каждом событии enterFrame, то есть при смене кадра. Если обнаружено, что одна из клавиш находится в нажатом состоянии, шар перемещается в соответствующем направлении.
Теперь вы знаете, как отслеживать нажатия на клавиши, чтобы в результате что-то происходило. Применений для этого множество – от перелистывания страниц в слайд-шоу до создания игр.
Объект String – один из наиболее часто используемых. Он располагает методами, удобными при построении и модифицировании строк – символьных последовательностей (в скриптах они заключаются в кавычки), содержащими информацию, понятную любому, кто умеет читать.
message = "No shoes, no service!"
Эта строка скрипта создает переменную с именем message, значением которой является строка. В данном случае мы можем считать, что эта переменная есть экземпляр объекта String – а значит, мы можем манипулировать ее значением, используя методы объекта String.
Рассмотрим несколько примеров.
Метод toUpperCase() объекта String меняет все буквы строки на заглавные. Например:
message = message.toUpperCase();
Этот скрипт изменил переменную message, и теперь он содержит строку "NO SHOES, NO SERVICE!". Можно достигнуть и противоположного эффекта – сделать все буквы строчными, для этого следует применить метод toLowerCase().
Заметим, что значение экземпляра текстового поля (текст в этом поле) тоже рассматривается как экземпляр объекта String. Так, если бы message было именем экземпляра текстового поля, то предыдущий скрипт следовало бы записать так:
message.text = message.text.toUpperCase();
Есть ли тут какие-либо преимущества? На самом деле, нет: все проекты разные, в одних случаях предпочтительнее пользоваться переменной, в других – именем текстового поля. Итак, экземпляр объекта String можно создать одним из следующих способов:
myNewStringObject = new String("Hello");. Для обращения к экземпляру объекта служит имя myNewStringObject.имя-ТекстовогоПоля.text.Большинство проектов в этой книге содержит текстовые поля, так что вы, пожалуй, обнаружите, что мы чаще всего используем последний вариант.
Еще один полезный метод объекта String – – позволяет найти в строке определенный (первый встретившийся) символ или последовательность символов. В результате возвращается число – индекс символа, то есть номер первого встреченного в строке совпавшего символа. Первый символ в строке имеет индекс 0, второй – индекс 1, и так далее. Если метод не находит совпадения символа или группы символов, то возвращается значение -1. Вот пример использования метода :
message.text = "No shoes no service!";
firstS = message.text.indexOf("s");
Переменной firstS будет присвоено значение 3 – именно таков индекс первой встреченной в строке буквы s.
No shoes no service! ||||||| 0123456
Порой может быть полезно определить число символов в строке. Сделать это просто, поскольку всякий экземпляр объекта String имеет такое свойство, как длина – length.
zipCode.text = "27609";
zipLength = zipCode.text.length;
if (zipLength == 5) {
// Длина индекса верная
} else {
//Длина индекса неверна
}
В первой строке задается текстовое значение, отображаемое в текстовом поле zipCode (мы предполагаем, что его ввел пользователь). В следующей строке создается переменная с именем zipLength и ей присваивается значение свойства length экземпляра zipCode.text – в данном случае 5, поскольку именно столько символов содержит поле zipCode. Последняя часть скрипта – оператор if, который должен содержать один набор действий на тот случай, если zipLength равно 5, и другой набор на случай, если это не так.
Объект Selection позволяет управлять различными аспектами текстового поля, находящегося в фокусе, в том числе выделенным текстом, получением и установкой текущей
Итак, щелкнув в текстовом поле, пользователь устанавливает его в фокус. Однако вы можете отвергнуть выбор пользователя при помощи метода setFocus() – очень важная возможность, ведь в каждый момент времени существует только один объект Selection, и прочие его методы применяются к полю, находящемуся в фокусе (в следующем упражнении вы убедитесь, что далеко не всегда можно положиться на то, что пользователь выберет – и установит в фокус – нужное текстовое поле).
И еще об одном методе объекта Selection – он позволяет выделить порцию текста динамически, без участия пользователя. Этот метод (синтаксис Selection.setSelection(param1, param2) ) имеет два параметра: индекс символа, с которого начинается выделение и индекс символа, которым выделение заканчивается. Допустим, имеется текстовое поле, содержащее текст "Derek is the craziest person I know". Чтобы выделить слово craziest (мы предполагаем, что поле находится в фокусе), нужно написать так:
Selection.setSelection(13, 20);

В этом упражнении мы создадим простенький текстовый редактор, используя большую часть методов объектов String и Selection.
В этом файле два слоя – Background и Buttons. Слой Background содержит изображение окна текстового редактора, а также текстовые поля. В слое Buttons находятся четыре кнопки, расположенные в верхней части окна редактора. На сцене три текстовых поля. Самое большое, в центре, представляет "текстовый документ". Имя экземпляра этого поля – inputField. Следующее поле, рядом с кнопкой Find, называется findField. При воспроизведении фильма пользователь сможет ввести в это поле символ или строку символов, с тем, чтобы они были найдены в поле inputField. Результат поиска будет отображен в третьем текстовом поле, в нижней части окна – оно называется status. В этом же текстовом поле будут отображаться результаты подсчета общего числа символов в документе. К кнопкам в верхней части окна мы присоединим различные скрипты, обеспечивающие работу нашего текстового редактора.

on (release) {
inputField.text = inputField.text.toUpperCase();
}
Flash интерпретирует этот скрипт так: "При отпускании этой кнопки перевести содержимое текстового поля inputField в верхний регистр". Иными словами, после нажатия этой кнопки все буквы в поле inputField станут заглавными.
on (release) {
inputField.text = inputField.text.toLowerCase();
}
Этот скрипт похож на предыдущий; отличие в том, что в данном случае все символы в текстовом поле inputField переводятся в нижний регистр (делаются строчными).
on (release) {
status.text = "В документе " + inputField.length + " символов.";
}
При выполнении этого скрипта в текстовом поле status будет отображено сообщение. Сообщение строится динамически. Определяется свойство Length текстового поля inputField и вставляется в середину сообщения, между словами "В документе" и "символов". Если документ содержит 50 символов, сообщение будет выглядеть так: "В документе 50 символов".
on(release) {
result = inputField.text.indexOf(findField.text);
if(findField.text != "" result >= 0) {
status.text = "Первый такой набор начинается с символа номер " + result;
Selection.setFocus("_root.inputField");
Selection.setSelection(result, result + findField.text.length);
} else {
status.text = "Такой набор символов не найден.";
}
}
Этот скрипт – самый сложный в этом упражнении. Первая строка присваивает значение переменной result при помощи метода объекта String. Скрипт ищет в текстовом поле inputField символ или символы, введенные в поле findField и выдает индекс первого символа найденной комбинации. Этот индекс и становится значением переменной result. Если же такая комбинация символов не найдена, result получает значение –1.
В следующей части скрипта применен оператор if, выполняющий один из двух наборов действий в зависимости от того, выполнено ли условие (точнее, даже два). Если значением поля findField не является пустая строка (это чтобы удостовериться, пользователь ввел хоть что-нибудь в это поле) и значение result больше или равно 0 (так будет, если введенная комбинация символов найдена в документе), выполняются три следующих действия. Если же хотя бы одно из условий не выполнено, оператор переходит к секции else, и тогда выполняется только одно действие, отображающее в поле status сообщение "Такой набор символов не найден".

Предположим, что оба условия выполнены и посмотрим, что же происходит в этом случае. Выполняются три действия из первой секции оператора if. Первое действие отображает в текстовом поле status сообщение, создаваемое динамически – к строке "Первый такой набор начинается с символа номер" добавляется значение result. Если, к примеру, result равно 7, получится сообщение "Первый такой набор начинается с символа номер 7". Следующие два действия используют методы объекта Selection, чтобы выделить в поле inputField найденную комбинацию символов. Как вы помните, текстовое поле должно получить фокус, прежде чем к нему можно будет применить методы объекта Selection. Поскольку мы хотим выделить текст в поле inputField, мы, с помощью следующей строки, устанавливаем фокус на это поле:
Selection.setFocus("_root.inputField");
В следующей строке скрипта с помощью другого метода объекта Selection выделяется порция текста в поле, имеющем фокус. Вот эта строка:
Selection.setSelection(result, result + findField.text.length);
Мы использовали два динамически полученных значения в качестве параметров этого метода, чтобы указать начало и конец выделения. Мы хотим, чтобы выделение начиналось с первого найденного символа, поэтому в качестве стартовой точки выделения используем значение result. Конечная точка выделения вычисляется путем сложения значения result и значения свойства length текстового поля findField. Как это все работает? Предположим, мы ввели в поле inputField текст "У меня есть собака". Затем вы ввели "собака" в поле findField и нажали кнопку Find. При выполнении скрипта result получит значение 12 (слово "собака" начинается с символа 12), а findField.text.length будет иметь значение 6 (текст в этом поле состоит из шести символов). С этими значениями строка скрипта выглядела бы так:
Selection.setSelection(12, 12+6);
или
Selection.setSelection(12, 18);
В результате в текстовом поле inputField будут выделены символы с 12 по 18 – они и составляют слово "собака".
Введите что-нибудь в поле inputField и попробуйте нажать кнопки findField и нажав кнопку Find.
Как видите, использовать методы объектов String и Selection совсем несложно – мы думаем, вы будете очень часто применять их для проверки и форматирования данных
Объекты Macromedia Flash похожи на объекты реального мира. Каждый тип объектов Flash соответствует тем или иным надобностям вашего Flash-приложения. В этом уроке мы познакомим вас с объектами Flash и поможем вам получить опыт их применения.
В этом уроке:
ColorKeyString и Selection
Этот текстовый редактор, созданный во Flash, станет одним из проектов, которые мы создадим в этом уроке
На выполнение этого урока требуется примерно 45 минут.
Файлы-носители:
Нет
Стартовые файлы:
Lesson04/Assets/Clown1.fla Lesson04/Assets/balloon1.fla Lesson04/Assets/wordProcessor1.fla
Законченные проекты:
lesson4/completed/Clown2.fla lesson4/completed/balloon2.fla lesson4/completed/wordProcessor2.fla
Вообразите на минутку, что вы – плотник. При постройке дома вам придется воспользоваться некоторыми готовыми объектами. Чтобы сколотить дверную раму, вам понадобится несколько брусьев, молоток и пригоршня гвоздей – все это объекты, обладающие определенными свойствами, которые дают возможность выполнить вашу работу. Порой вы даже не очень представляете себе, как именно работает объект (ну, взять хоть бетономешалку) – вы "даете" объекту некий материал, а он выдает вам нечто совсем другое.
Такой же смысл и у объектов Flash: это элементы, используемые особым способом для построения приложения или выполнения определенной задачи. Считайте, что объекты – это инструменты и строительные материалы для вашего проекта.
В
Объектам присущи атрибуты двух основных разновидностей: свойства и методы. Рассмотрим подробнее то и другое.

Многие (хотя и не все) объекты имеют свойства – набор переменных, представляющих характеристики объекта. Например, в реальном мире автомобиль обладает такими свойствами, как цвет, марка, модель, мощность и так далее. Если бы этот автомобиль был объектом
car.color = "red"; car.make = "Volkswagen"; car.model = "Beetle"; car.horsepower = 100;
Во Flash различные объекты могут иметь разные свойства. Например, объект обладает свойствами, определяющими его прозрачность, видимость, позиции по горизонтали и вертикали, угол поворота и еще многими. Изменение какого-либо из этих свойств влияет на внешний вид фильма-символа или его поведение, – так же, как влияет на автомобиль покраска или замена двигателя. В своих скриптах вы можете в любое время использовать или изменить значения свойств объектов. Предположим, в вашем проекте автомобиль должен перемещаться со скоростью, зависящей от мощности его двигателя. Соответствующая строка скрипта могла бы выглядеть так:
speedFactor = car.horsepower;
Давайте рассмотрим еще один пример использования свойств объекта в
String (строка). Например,
name = "Flash"; lengthOfName = name.length;
В первой строке этого кода создается переменная с именем name, которая получает значение lenghtOfName, и ей присваивается значение свойства length объекта name (которое равно 5). Названия свойств фильма-символа обычно начинаются с символа подчеркивания ( _alpha, _rotation и так далее), однако это не является общим правилом для названий свойств объектов. Дело в том, что этот обычай перекочевал из Flash 4; тогда свойства только еще вводились и
Примечание Свойства объектов бывают разных типов – это могут быть переменные, массивы и даже другие объекты.
Метод представляет собой задачу, которую способен выполнять объект. Если считать видеомагнитофон объектом, то к его методам будут относиться воспроизведение, запись,
play(); rewind(); record();
Чтобы вызвать метод объекта, нужно сначала указать сам объект (или имя экземпляра объекта – что это значит, мы сейчас объясним), затем ставится точка, затем – имя метода:
myVCR.record();
Это будет указание объекту с именем myVCR начать запись.
Скобки, стоящие после имени объекта, могут заключать в себе параметр или набор параметров. Параметры – это сведения, позволяющие методу выполнить свою задачу некоторым определенным образом. Вновь используем в качестве примера видеомагнитофон. Допустим, вы хотите записать телепередачу по 8 каналу с 10 до 11 часов 9 сентября. Скрипт для выполнения такой задачи мог бы выглядеть так:
myVCR.record (8, 10:00, 11:00, September 9);
Как видите, параметры метода отделены друг от друга запятыми. Значения параметров могут быть заданы прямо (как в приведенном примере), либо в качестве значений параметров можно подставить динамические значения – скажем, переменные. В качестве параметра можно даже использовать другой метод.
Многие объекты stop() объекта просто останавливает воспроизведение монтажного стола – тут нечего ни прибавить, ни убавить.
Каждый тип объекта имеет уникальный набор методов – оно и понятно, ведь все объекты выполняют специфические задачи.

Методы объектов в
В этом уроке мы продемонстрируем некоторые из этих задач, а еще много больше – в ходе всего курса.
Примечание Объект не обязательно должен содержать свойства и методы. Однако какое применение мог бы найти объект без свойств и методов?
Объекты организованы по классам, которые представляют собой группы объектов, имеющих схожие свойства и методы. В реальном мире автомобили представляют собой один класс объектов, а рыбы, книги, даже люди – другие классы. Каждый из 6 миллиардов людей на этой планете может рассматриваться как экземпляр класса Человек. Хотя каждый человек уникален, всем людям присущи схожие свойства (имя, возраст, цвет волос, рост и тому подобное) и виды деятельности (дыхание, ходьба, осязание, зрение и так далее). Поскольку каждый новый созданный вами экземпляр фильма-символа является экземпляром объекта

Практически любой проект содержит по нескольку экземпляров одного , о котором мы только что говорили, или объекта String (ведь проект может содержать много разных String ). Другие объекты являются универсальными, или глобальными – это значит, что проект может содержать лишь один экземпляр такого объекта. Таков, например, объект (мышь), который, помимо прочего, управляет "видимостью" указателя. Поскольку указатель может быть только один, вы не можете создать несколько экземпляров мыши, а можете лишь использовать присущие этому объекту методы.
Создать экземпляр объекта можно двумя способами. Чтобы создать новый экземпляр объекта , достаточно поместить на сцену фильм-символ. Однако такой способ пригоден лишь для некоторых (немногочисленных) типов объектов. Для создания экземпляров объектов других типов необходимо использовать конструктор – это довольно простая строка кода, приказывающая Flash создать новый экземпляр определенного объекта. Конструктор выглядит так:
имяЭкземпляра = new имяОбъекта();
Так, если мы хотим создать экземпляр объекта (звук), конструктор будет примерно таким:
mySoundInstance = new Sound();
Каждый раз, создавая экземпляр объекта, вы должны присваивать ему имя, уникальное для данного проекта. Это позволит изменить свойство или вызвать метод, соответствующий конкретному экземпляру – в последующих примерах мы это продемонстрируем. Поднабравшись опыта в программировании, вы поймете, когда следует использовать конструкторы.
Примечание Для имен объектов действуют те же ограничения, что и для имен переменных; то есть имена не должны содержать пробелов,
Совет Во Flash вы можете присоединять к имени объекта специальные суффиксы, способствующие получению подсказок в панели Действия. Например, вы можете назвать экземпляр фильма-символа myMovieClip, а можете с myMovieClip_mc. В последнем случае панель Действия будет понимать, что это имя соответствует объекту определенного типа и при вводе скриптов вы будете получать раскрывающийся список, содержащий имена всех свойств и методов, присущих этому объекту. Полный список суффиксов вы можете найти в Словаре
В списке панели Действия, в разделе Objects, вы сможете найти все объекты Flash. Они разбиты по следующим подразделам:
Далее приводится описание многих классов объектов
Данный объект содержит неизменяемую информацию (только для чтения) о том, может ли компьютер пользователя использовать
Accessibility.isActive();
Приведенная строка true либо false. Если результат – true, значит, компьютер пользователя может использовать
Массив ( array ) есть "приспособление" для хранения совокупности однородных данных. Размещение информации в массиве и доступ к ней осуществляется посредством индексной системы. Например:
cakeType = new Array(); cakeType[0] = "Chokolate"; cakeType[1] = "Angel Food"; cakeType[2] = "Baked Alaska";
В первой строке этого скрипта с помощью конструктора создается новый массив строк (экземпляр объекта Array ) с именем cakeType. Следующие строки помещают данные в этот массив.
Объект Array располагает многими полезными методами, которые позволят вам добавить, удалить и отсортировать элементы массива.
Примечание Подробнее о массивах смотри Урок 7 – Работа с динамическими данными.
Объект (логический) хранит одно из двух значений – true или false. Создать экземпляр объекта можно с помощью конструктора либо оператором присвоения ( = ). Например, скрипты
toggle = new Boolean(false);
или
toggle = false;
создают один и тот же объект.
Помещая на сцену кнопку, вы создаете экземпляр объекта Button. Подобным образом можно создать только еще два типа объектов – (фильм-символ) и TextField (текстовое поле). Объект Button содержит свойства и методы, позволяющие управлять внешним видом кнопки, функциональностью, порядком переноса фокуса и многим другим.
Этот объект содержит информацию о компьютере пользователя – о разрешении экрана, о том, может ли компьютер воспроизводить звук и тому подобное. Следующая строка myVariable значение разрешения экрана пользователя по горизонтали:
myVariable = System.capabilities.screenResolutionX;
Совет Возможность доступа к этой информации позволяет создавать фильмы, способные автоматически подстраиваться к возможностям компьютера пользователя. Например, можно определить, не открыт ли фильм на портативном компьютере – и если это так, переадресовать пользователя на страницу, разработанную специально для
Этот объект используется для динамического изменения цвета фильмов-символов. Создавая объект Color, вы указываете ему на определенный фильм-символ. Затем, с помощью методов объекта Color, вы можете управлять цветом фильма-символа. Объект Color создается при помощи конструктора, например:
myColor = new Color(путьКМонтажномуСтолу);
Позднее в этом уроке мы выполним упражнение с использованием объекта Color.
С помощью этого объекта фильму становится доступна информация о текущем времени (местном или по Гринвичу), а также текущая дата – день, месяц и год. Для создания объекта Date следует использовать конструктор. Следующий пример демонстрирует использование объекта Date:
now = new Date(); largeNumber = now.getTime();
Этот скрипт создает переменную с именем largeNumber, значением которой станет число миллисекунд, прошедших с полуночи 1 января 1970 года до текущего момента.
Примечание Подробнее об использовании объекта Date смотри Урок 15 – Привязка динамики к времени или кадрам.
Объект Key используется для определения состояния клавиатуры – например, можно узнать, не нажата ли клавиша
В этом уроке мы выполним упражнение с использованием этого объекта.
Flash позволяет загружать в фильм данные (например, переменные) из внешних источников. Используя объект LoadVars, Flash загружает данные в переменные с указанного URL (это может быть и статичный текстовый файл). Например:
myOb = new LoadVars();
myOb.load("http://www.mysite.com/myFiles/file.txt");
В приведенном примере все загруженные переменные становятся свойствами экземпляра .
Объект Math – это набор Math:
positiveNumber = Math.abs(-6);
Приведенный скрипт использует метод (вычисление абсолютного значения, или модуля) объекта Math для преобразования отрицательного числа в положительное.
Объект (мышь) управляет отображением указателя (курсора), а также позволяет создавать слушатели для отслеживания активности мыши. Вот пример его использования:
Mouse.hide();
Эта строка скрипта скрывает указатель мыши. Мышь остается активной, просто указатель не отображается на экране.
Наверное, это наиболее знакомый вам объект. Его экземпляры создаются в среде разработки (путем помещения их на сцену) либо с помощью createEmptyMovieClip() и duplicateMovieClip(). Фильмы-символы имеют множество свойств и методов, которые часто используются в интерактивных проектах. Пример использования:
myClip.gotoAndStop("Menu");
Этим скриптом экземпляр фильма-символа с именем myClip переводится к кадру с меткой
Экземпляр объекта Number можно создать с помощью конструктора либо присвоив переменной числовое значение. Например:
age = new Number(26); или эквивалентное действие: age = 26;
Конструктор new Number() используется редко, поскольку простое присваивание числового значения проще, а результат один и тот же.
Нет, это не опечатка: существует тип объектов под названием Object! Этот объект известен как родовой, или корневой объект
Синтаксис использования родового объекта таков:
names = new Object(); names.cat = "Hayes";
В первой строке скрипта создается новый объект под названием names. Вторая строка добавляет в новый объект переменную с именем . Эта переменная станет свойством объекта.
В Уроке 6 – Создание и модификация объектов – мы научим вас создавать собственные объекты (это лучше, чем просто использовать родовой объект!), а также свойства и методы для них. Тогда вы сможете создавать объекты, точно соответствующие вашим нуждам.
Объект Selection (выделение) позволяет получить информацию (или набор характеристик) о выделенных элементах вашего фильма, особенно это полезно при работе с текстовыми полями. Когда курсор установлен в текстовом поле, говорят, что это поле находится "в фокусе". Объект Selection можно использовать для того, чтобы установить фокус в определенное текстовое поле, чтобы определить, какое поле находится в фокусе в данный момент, даже для того, чтобы Selection:
Selection.setFocus("firstName");
Этот скрипт устанавливает в фокус экземпляр текстового поля для ввода с именем
В этом уроке мы выполним упражнение с использованием этого объекта.
Объект используется для управления воспроизведением звукозаписей – например, установки громкости, настройки баланса между правым и левым каналами. Узнать больше об этом объекте вы сможете из Урока 16 – Программирование звукозаписей.
Объект String предназначен для получения информации о String или путем присвоения переменной строкового значения – последовательности символов, заключенной в кавычки. Например:
bird = new String("Robin");
или, что то же самое:
bird = "Robin";
В этом уроке мы выполним упражнение с использованием этого объекта.
Объект позволяет получать информацию о характеристиках сцены и управлять ими (например, выравниванием). Вот пример:
Stage.height
Эта строка скрипта возвращает высоту сцены в пикселях.
Этот объект содержит данные о системе пользователя – такие, как тип операционной системы, используемый язык, а также все свойства объекта . Одним из свойств объекта System является строка под названием serverString, которая содержит список возможностей системы (объединенных в одну строку). Этот список можно переслать на сервер, с тем, чтобы сохранить или использовать эту информацию. Синтаксис доступа к этой строке таков:
System.capabilities.serverString
С помощью этого объекта можно динамически создать новое текстовое поле и управлять большинством его характеристик – например, установить формат текстового поля или прокрутку текста. Чтобы создать экземпляр этого объекта, нужно поместить на сцену текстовое поле либо создать его динамически при помощи действия createTextField(). В этом уроке мы будем использовать этот объект.
Объект TextFormat используется для форматирования текста, отображаемого в текстовых полях. Создав объект TextFormat, вы должны применить его к текстовому полю, используя методы setTextFormat() или setNewTextFormat() объекта TextField:
nameOfTextField.setTextFormat(nameOfFormatObject);
XML – один из наиболее популярных стандартов форматирования данных, что не удивительно – многие приложения способны обмениваться данными в формате XML. Во Flash вы имеете возможность создать объект для хранения документа в формате XML. Документ, загруженный в XML-объект, можно переслать другому XML-объекту или приложению. Пример использования объекта XML:
myXML = new XML();
myXML.load("myFile.xml");
Приведенный здесь скрипт создает новый объект XML и загружает в него файл в формате XML.
Flash позволяет также установить постоянное соединение с создаются при помощи конструктора. Вот пример использования объекта :
mySocket = new XMLSocket();
mySocket.connect("http://www.electrotank.com", 8080);
Приведенный здесь скрипт создает новый объект , а затем открывает соединение с вы найдете в Уроке 12 – Применение XML во Flash, там же имеется упражнение, которое позволит вам создать свое собственное чат-приложение.
Мы не можем в этой книге описать подробно каждый тип объектов. Однако в ходе курса мы с вами будем использовать многие из этих объектов различными способами, при этом вы получите детальные сведения о том, как и почему мы это делаем. В следующем упражнении мы сконцентрируемся на одном из объектов, чтобы дать вам общее представление об использовании объектов.
Чтобы использовать объект Color, нужно сначала создать его при помощи конструктора. Синтаксис создания нового объекта типа Color следующий:
myColor = new Color(shirt);
Приведенная строка Color с именем myColor и связывает его с экземпляром фильма-символа, имеющим имя shirt.

Объект может быть создан где угодно, и конструктор может иметь один параметр – путь к фильму-символу, который он должен модифицировать. Если нужно создать объект Color внутри того самого фильма-символа, на который он должен будет воздействовать, следует использовать в качестве пути this. Например, так:
myColor = new Color(this);
Созданный таким образом экземпляр объекта Color будет изменять цвет того экземпляра фильма-символа, который содержит скрипт.
Примечание. Вы можете создать много разных объектов Color (так же, как прочих объектов, создаваемых конструктором) и ассоциировать их с разными монтажными столами, получив возможность динамически управлять цветом многих экземпляров одновременно.
Наиболее часто используемый метод объекта Color – метод setRGB(), изменяющий цвет экземпляра фильма-символа, указанного в качестве параметра при создании объекта. Вот пример использования метода setRGB():
myColor = new Color(shirt); myColor.setRGB(0xFF3300);
Приведенный здесь скрипт создает новый объект Color с именем myColor, затем, используя метод setRGB(), цвет экземпляра фильма-символа shirt изменяется на красный. Этот метод имеет параметр – (0x), за которым следует шестнадцатеричное число – код цвета. Параметр 0x – зарезервированная комбинация символов, показывающая Flash, что здесь следует шестнадцатеричное число.
Числовая система, которой мы привыкли пользоваться, называется десятичной, или, как еще говорят, с основанием 10; в ней для выражения любых чисел используется десять цифр (от нуля до девятки). Все прочие числа (28; 6403; 496; 300; 439 и так далее) можно записать в виде комбинации этих десяти цифр. В программировании применяется также шестнадцатеричная система (с основанием 16); в ней для записи чисел используются, помимо цифр от 0 до 9, еще и буквы от A до F. Записанное в шестнадцатеричной системе число 00 соответствует десятичному 0, а шестнадцатеричное число FF – десятичному 255.

Впрочем, чтобы описать тот или иной цвет для метода setRGB(), совершенно не обязательно знать его шестнадцатеричный код. Зная десятичные значения RGB для нужного цвета, вы можете, динамически преобразовать их в шестнадцатеричный код – с помощью объекта Number и функции parseInt() ; в следующем упражнении мы покажем, как это сделать.
В данном упражнении мы создадим несложную интерактивную сцену, в которой можно будет, нажав несколько кнопок, изменить цвет волос клоуна.
Графическое содержание уже создано и размещено на сцене, так что мы можем сосредоточить все внимание на программировании изменения цвета фильма-символа. На основном монтажном столе три слоя: Background (фон), Clown Hair (волосы клоуна) и Buttons (кнопки).
Слой Clown Hair содержит экземпляр фильма-символа с именем hair. Цвет этого экземпляра мы и будем менять при помощи
В слое Buttons имеется пять круглых цветных кнопок. К этим кнопкам мы присоединим скрипты, изменяющие цвет волос клоуна.
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0xCC0000);
}
Этот скрипт дает Flash указание, когда кнопка будет отпущена после нажатия, создать новый объект Color с именем hairColor и связать этот объект с экземпляром фильма-символа hair. Во второй строке используется метод setRGB() для изменения цвета объекта Color (а следовательно, экземпляра hair ), на CC0000 – это шестнадцатеричное значение соответствует красному цвету, как раз такому, каким окрашена кнопка.
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0xFFCC00);
}
Скрипт идентичен тому, что мы присоединили к красной кнопке, изменился лишь код цвета в методе setRGB() – на сей раз значение соответствует желтому цвету.
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0x009900);
}
Цвет зеленой кнопки кодируется как 009900, и это значение использовано на этот раз в методе setRGB().
on (release) {
hairColor = new Color(hair);
hairColor.setRGB(0x336699);
}
То же, что и для трех предыдущих кнопок – создается объект Color, который меняет цвет экземпляра фильма-символа hair.

Что ж, давайте проверим нашу работу!
Каждый раз при щелчке на какой-либо из кнопок Flash создает новый объект типа Color и связывает его с экземпляром фильма-символа hair. Затем используется метод setRGB() объекта Color, и цвет этого экземпляра изменяется.
Примечание В этом упражнении объект Color заново создается каждой кнопкой, хотя на самом деле это излишне – объект, будучи однажды создан, становится частью монтажного стола. Любые дальнейшие изменения этого объекта можно сделать при помощи доступных ему методов.
А теперь давайте запрограммируем случайный выбор цвета волос клоуна.
on (release) {
R = random(256);
G = random(256);
B = random(256);
colorHexString = R.toString(16)+G.toString(16)+B.toString(16);
colorHex = parseInt(colorHexString,16);
hairColor = new Color(hair);
hairColor.setRGB(colorHex);
}
Во Flash существует два способа программного описания цвета: переменными RGB ( red, green, blue – красный, зеленый, синий) или в виде шестнадцатеричного числа. Существует три отдельных переменных RGB, каждая из которых может принимать числовые значения от 0 до 255. Например, чистый красный цвет описывается RGB-переменными так: R=255, G=0, B=0. Соответствующее шестнадцатеричное число, кодирующее тот же самый цвет – FF0000. Смысл первых пяти строк этого скрипта заключается в генерировании случайных значений RGB и преобразовании их в шестнадцатеричное число. Затем (в последней строке скрипта) полученное число используется в качестве параметра метода setRGB().
Итак, в трех первых строках скрипта создаются переменные R, G и B, которые получают случайные значения в диапазоне от 0 до 255. В следующей строке применен метод toString() объекта Number – для преобразования десятичного числа в шестнадцатеричное. Предположим, переменным R, G и B были присвоены следующие случайные значения:
R = 45 G = 202 B = 129
Следующая строка скрипта гласит: следует преобразовать значение R в шестнадцатеричное, затем преобразовать его в G и B. С помощью оператора + преобразованные значения соединяются, и в итоге переменная colorHexString получает строковое значение "2DCA81". Его необходимо преобразовать в шестнадцатеричное число, чтобы использовать как параметр метода setRGB(). Для этого, как видите, применена функция parseInt().
Ну, и в последних двух строках скрипта создается новый объект Color, связанный с экземпляром фильма-символа hair, а затем применяется цвет, закодирован созданным нами случайным числом.
Примечание Подобным образом можно получить (генерировать) с помощью
Как видите, цвет экземпляра фильма-символа hair меняется случайным образом! Вы можете даже модифицировать эту "технологию", чтобы менялся случайным образом лишь оттенок цвета – в определенном диапазоне.
Теперь вы знаете, как в любое время изменить цвет любого экземпляра фильма-символа.
Объект Key – очень полезный инструмент, позволяющий отслеживать события клавиш (то есть, взаимодействие пользователя с клавиатурой). С помощью объекта Key вы сможете:
Объект Key – глобальный, а это значит, что вы не можете создать несколько экземпляров его. Чаще всего этот объект применяется для определения нажатия той или иной клавиши. Синтаксис этой операции таков:
Key.isDown(Key.TAB);
В приведенной здесь строке используется метод isDown() объекта Key для определения нажатия на клавишу. Этот метод возвращает результат true либо false. В качестве параметра метода isDown() можно указать либо имя клавиши в объекте Key, либо числовой код этой клавиши. Например, для клавиши Tab можно указать имя – Key.TAB, либо число 9 – код этой клавиши в таблице
Key.isDown(9);
В следующем несложном упражнении мы будем перемещать по экрану воздушный шар – с помощью клавиатуры и объекта Key.
Фильм содержит два слоя: Background и

onClipEvent (load) {
speed = 3;
}
К концу этого упражнения мы запрограммируем возможность перемещения шара при помощи клавиш-стрелок. При каждом нажатии на клавишу шар будет перемещаться в определенном направлении. Этот же скрипт выполняется при загрузке экземпляра фильма-символа и устанавливает значение переменной
onClipEvent (enterFrame) {
if (key.isDown(key.RIGHT)) {
_x += speed;
} else if (key.isDown(key.LEFT)) {
_x -= speed;
}
}
В этом скрипте применен обработчик события enterFrame, который содержит Key.RIGHT – это ссылка на клавишу-стрелку "вправо", а key.LEFT, соответственно, "влево". Вот как происходит выполнение скрипта. При нажатии на клавишу "вправо" к текущей горизонтальной координате экземпляра фильма-символа прибавляется значение (шар перемещается вправо). Если же клавиша-стрелка "вправо" не нажата, то эта часть скрипта игнорируется и выполняется следующая секция – если нажата клавиша "влево", то из текущей горизонтальной координаты экземпляра фильма-символа вычитается значение (шар перемещается влево).

if (key.isDown(key.UP)) {
_y -= speed;
} else if (key.isDown(key.DOWN)) {
_y += speed;
}
Скрипт очень похож на предыдущий. Однако здесь оператор if проверяет нажатия на клавиши-стрелки "вверх" и "вниз". В первой части этого оператора проверяется, не нажата ли клавиша "вверх", и если это так, из текущей вертикальной координаты экземпляра фильма-символа вычитается значение (шар перемещается вверх). Если же нажата клавиша "вниз", то к текущей вертикальной координате экземпляра фильма-символа прибавляется значение (шар перемещается вниз).
Условия, которые мы запрограммировали, проверяются при каждом событии enterFrame, то есть при смене кадра. Если обнаружено, что одна из клавиш находится в нажатом состоянии, шар перемещается в соответствующем направлении.
Теперь вы знаете, как отслеживать нажатия на клавиши, чтобы в результате что-то происходило. Применений для этого множество – от перелистывания страниц в слайд-шоу до создания игр.
Объект String – один из наиболее часто используемых. Он располагает методами, удобными при построении и модифицировании строк – символьных последовательностей (в скриптах они заключаются в кавычки), содержащими информацию, понятную любому, кто умеет читать.
message = "No shoes, no service!"
Эта строка скрипта создает переменную с именем message, значением которой является строка. В данном случае мы можем считать, что эта переменная есть экземпляр объекта String – а значит, мы можем манипулировать ее значением, используя методы объекта String.
Рассмотрим несколько примеров.
Метод toUpperCase() объекта String меняет все буквы строки на заглавные. Например:
message = message.toUpperCase();
Этот скрипт изменил переменную message, и теперь он содержит строку "NO SHOES, NO SERVICE!". Можно достигнуть и противоположного эффекта – сделать все буквы строчными, для этого следует применить метод toLowerCase().
Заметим, что значение экземпляра текстового поля (текст в этом поле) тоже рассматривается как экземпляр объекта String. Так, если бы message было именем экземпляра текстового поля, то предыдущий скрипт следовало бы записать так:
message.text = message.text.toUpperCase();
Есть ли тут какие-либо преимущества? На самом деле, нет: все проекты разные, в одних случаях предпочтительнее пользоваться переменной, в других – именем текстового поля. Итак, экземпляр объекта String можно создать одним из следующих способов:
myNewStringObject = new String("Hello");. Для обращения к экземпляру объекта служит имя myNewStringObject.имя-ТекстовогоПоля.text.Большинство проектов в этой книге содержит текстовые поля, так что вы, пожалуй, обнаружите, что мы чаще всего используем последний вариант.
Еще один полезный метод объекта String – – позволяет найти в строке определенный (первый встретившийся) символ или последовательность символов. В результате возвращается число – индекс символа, то есть номер первого встреченного в строке совпавшего символа. Первый символ в строке имеет индекс 0, второй – индекс 1, и так далее. Если метод не находит совпадения символа или группы символов, то возвращается значение -1. Вот пример использования метода :
message.text = "No shoes no service!";
firstS = message.text.indexOf("s");
Переменной firstS будет присвоено значение 3 – именно таков индекс первой встреченной в строке буквы s.
No shoes no service! ||||||| 0123456
Порой может быть полезно определить число символов в строке. Сделать это просто, поскольку всякий экземпляр объекта String имеет такое свойство, как длина – length.
zipCode.text = "27609";
zipLength = zipCode.text.length;
if (zipLength == 5) {
// Длина индекса верная
} else {
//Длина индекса неверна
}
В первой строке задается текстовое значение, отображаемое в текстовом поле zipCode (мы предполагаем, что его ввел пользователь). В следующей строке создается переменная с именем zipLength и ей присваивается значение свойства length экземпляра zipCode.text – в данном случае 5, поскольку именно столько символов содержит поле zipCode. Последняя часть скрипта – оператор if, который должен содержать один набор действий на тот случай, если zipLength равно 5, и другой набор на случай, если это не так.
Объект Selection позволяет управлять различными аспектами текстового поля, находящегося в фокусе, в том числе выделенным текстом, получением и установкой текущей
Итак, щелкнув в текстовом поле, пользователь устанавливает его в фокус. Однако вы можете отвергнуть выбор пользователя при помощи метода setFocus() – очень важная возможность, ведь в каждый момент времени существует только один объект Selection, и прочие его методы применяются к полю, находящемуся в фокусе (в следующем упражнении вы убедитесь, что далеко не всегда можно положиться на то, что пользователь выберет – и установит в фокус – нужное текстовое поле).
И еще об одном методе объекта Selection – он позволяет выделить порцию текста динамически, без участия пользователя. Этот метод (синтаксис Selection.setSelection(param1, param2) ) имеет два параметра: индекс символа, с которого начинается выделение и индекс символа, которым выделение заканчивается. Допустим, имеется текстовое поле, содержащее текст "Derek is the craziest person I know". Чтобы выделить слово craziest (мы предполагаем, что поле находится в фокусе), нужно написать так:
Selection.setSelection(13, 20);

В этом упражнении мы создадим простенький текстовый редактор, используя большую часть методов объектов String и Selection.
В этом файле два слоя – Background и Buttons. Слой Background содержит изображение окна текстового редактора, а также текстовые поля. В слое Buttons находятся четыре кнопки, расположенные в верхней части окна редактора. На сцене три текстовых поля. Самое большое, в центре, представляет "текстовый документ". Имя экземпляра этого поля – inputField. Следующее поле, рядом с кнопкой Find, называется findField. При воспроизведении фильма пользователь сможет ввести в это поле символ или строку символов, с тем, чтобы они были найдены в поле inputField. Результат поиска будет отображен в третьем текстовом поле, в нижней части окна – оно называется status. В этом же текстовом поле будут отображаться результаты подсчета общего числа символов в документе. К кнопкам в верхней части окна мы присоединим различные скрипты, обеспечивающие работу нашего текстового редактора.

on (release) {
inputField.text = inputField.text.toUpperCase();
}
Flash интерпретирует этот скрипт так: "При отпускании этой кнопки перевести содержимое текстового поля inputField в верхний регистр". Иными словами, после нажатия этой кнопки все буквы в поле inputField станут заглавными.
on (release) {
inputField.text = inputField.text.toLowerCase();
}
Этот скрипт похож на предыдущий; отличие в том, что в данном случае все символы в текстовом поле inputField переводятся в нижний регистр (делаются строчными).
on (release) {
status.text = "В документе " + inputField.length + " символов.";
}
При выполнении этого скрипта в текстовом поле status будет отображено сообщение. Сообщение строится динамически. Определяется свойство Length текстового поля inputField и вставляется в середину сообщения, между словами "В документе" и "символов". Если документ содержит 50 символов, сообщение будет выглядеть так: "В документе 50 символов".
on(release) {
result = inputField.text.indexOf(findField.text);
if(findField.text != "" result >= 0) {
status.text = "Первый такой набор начинается с символа номер " + result;
Selection.setFocus("_root.inputField");
Selection.setSelection(result, result + findField.text.length);
} else {
status.text = "Такой набор символов не найден.";
}
}
Этот скрипт – самый сложный в этом упражнении. Первая строка присваивает значение переменной result при помощи метода объекта String. Скрипт ищет в текстовом поле inputField символ или символы, введенные в поле findField и выдает индекс первого символа найденной комбинации. Этот индекс и становится значением переменной result. Если же такая комбинация символов не найдена, result получает значение –1.
В следующей части скрипта применен оператор if, выполняющий один из двух наборов действий в зависимости от того, выполнено ли условие (точнее, даже два). Если значением поля findField не является пустая строка (это чтобы удостовериться, пользователь ввел хоть что-нибудь в это поле) и значение result больше или равно 0 (так будет, если введенная комбинация символов найдена в документе), выполняются три следующих действия. Если же хотя бы одно из условий не выполнено, оператор переходит к секции else, и тогда выполняется только одно действие, отображающее в поле status сообщение "Такой набор символов не найден".

Предположим, что оба условия выполнены и посмотрим, что же происходит в этом случае. Выполняются три действия из первой секции оператора if. Первое действие отображает в текстовом поле status сообщение, создаваемое динамически – к строке "Первый такой набор начинается с символа номер" добавляется значение result. Если, к примеру, result равно 7, получится сообщение "Первый такой набор начинается с символа номер 7". Следующие два действия используют методы объекта Selection, чтобы выделить в поле inputField найденную комбинацию символов. Как вы помните, текстовое поле должно получить фокус, прежде чем к нему можно будет применить методы объекта Selection. Поскольку мы хотим выделить текст в поле inputField, мы, с помощью следующей строки, устанавливаем фокус на это поле:
Selection.setFocus("_root.inputField");
В следующей строке скрипта с помощью другого метода объекта Selection выделяется порция текста в поле, имеющем фокус. Вот эта строка:
Selection.setSelection(result, result + findField.text.length);
Мы использовали два динамически полученных значения в качестве параметров этого метода, чтобы указать начало и конец выделения. Мы хотим, чтобы выделение начиналось с первого найденного символа, поэтому в качестве стартовой точки выделения используем значение result. Конечная точка выделения вычисляется путем сложения значения result и значения свойства length текстового поля findField. Как это все работает? Предположим, мы ввели в поле inputField текст "У меня есть собака". Затем вы ввели "собака" в поле findField и нажали кнопку Find. При выполнении скрипта result получит значение 12 (слово "собака" начинается с символа 12), а findField.text.length будет иметь значение 6 (текст в этом поле состоит из шести символов). С этими значениями строка скрипта выглядела бы так:
Selection.setSelection(12, 12+6);
или
Selection.setSelection(12, 18);
В результате в текстовом поле inputField будут выделены символы с 12 по 18 – они и составляют слово "собака".
Введите что-нибудь в поле inputField и попробуйте нажать кнопки findField и нажав кнопку Find.
Как видите, использовать методы объектов String и Selection совсем несложно – мы думаем, вы будете очень часто применять их для проверки и форматирования данных
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.