к оглавлению Flash   Алгоритмизация   4GL - визуальные среды мультимедийные технологии  

Мультимедийный скриптовый язык ActionScript

Специализированные объекты ActionScript

Здесь рассматривается ряд специализированных объектов — Color, Date, Math, Number и Sound, — о которых не упоминалось в предыдущих уроках. Кроме того, мы рассмотрим вопросы создания перечисленных объектов, их методы и свойства.

Обзор Flash

Вы уже видели, что нового привнесли в систему Flash 5 объекты ActionScript. Мы рассмотрели целый ряд объектов — от массивов, введенных в уроке 2, до специализированных объектов, обеспечивающих возможность работы с мышью, которые были рассмотрены в уроке 6. Объекты ActionScript, обладающие целым рядом встроенных методов, позволяют создавать интересные эффекты и изменять свойства. В этом уроке описаны все специализированные объекты ActionScript — Color, Date, Math и Number, — причем описание каждого объекта сопровождается примером фильма. В конце урока в проекте фильма, в котором активно используется звук, вы увидите, каким образом можно регулировать уровни звука в двух «пульсирующих» на экране колонках.

Большинство объектов, работа с которыми является темой этого урока, следует признать в высшей степени специализированными и техническими. Если некоторые методы или свойства объектов покажутся вам трудными для понимания, скорее всего это будет связано с определенными тонкостями настройки цвета и звука, со сложными математическими понятиями и т. п.; по большей части все это находится за пределами каждодневной практики большинства разработчиков. Однако автор счел необходимым включить эти объекты в сферу рассмотрения, так как многим читателям наверняка все же доведется столкнуться с необходимостью создания специализированных приложений, в которых будут использоваться специализированные объекты. Во многих случаях приведенные здесь образцы сценариев помогут вам понять, как следует использовать различные методы и какую информацию они возвращают пользователю.

Объект Color

Объект Color располагает двумя основными методами изменения цвета других объектов, точнее говоря, клипов. В первом методе используются шестна-дцатеричное значение и код в стандарте RGB — Red, Green, Blue (красный, зеленый, синий). Даже те из вас, кто незнаком с кодом RGB и шестнадцате-ричным цветовым кодом, принятым в языке HTML, по достоинству оценят простоту этого метода. Значения элементов кода RGB, выраженные десятичными цифрами, изменяются в диапазоне от 0 до 255 (0-FF при записи в шестнадцатеричной системе счисления). Код RGB представляет собой последовательность шести шестнадцатеричных цифр, каждая пара которых выражает значение соответственно красного, зеленого и синего цветов. Так, для того чтобы получить чистый красный цвет, следует использовать код FF0000. Чтобы увеличить или уменьшить долю того или иного простого цвета в комбинации цветов, следует изменить соответствующий шестнадцатерич-ный элемент в коде RGB. Шестнадцатеричные числа отличаются от десятичных лишь тем, что в качестве основания системы счисления для первых используется 16 (0-F), а не 10 (0-9), как для вторых. Как и в десятичной системе счисления, чтобы получить цифры, обозначающие первые п чисел (где п — основание системы счисления, а первым считается число 0), следует записать сначала 10 десятичных цифр, а затем — первые 6 букв латинского алфавита: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е и F. Таким образом, в шестнадцатеричных числах кроме десятичных цифр используются буквы А, В, С, D, Е и F. При этом F=15; 10=16; 11=17 и т. д. Достаточно знать, что самый большой цифрой является F, а самой маленькой — 0. Чтобы записать очередное значение, для которого не предусмотрено отдельной цифры, следует использовать следующий разряд, как и в случае с десятичными цифрами. К примеру, если вы хотите увеличить долю зеленого цвета в какой-то комбинации цветов, где значение элемента, обозначающего зеленый цвет, равно С5, вы можете заменить код зеленого цвета на D6, Е9, FC или любой другой (максимальное значение — FF).

Задание цвета объектов

Чтобы задать цвет клипа, следует ввести в сценарий объект Color с помощью ключевого слова new. Например, чтобы создать объект Color для клипа с именем экземпляра dress, вы должны создать объектную переменную для представления цвета, а затем указать конкретный код RGB (в следующем примере — синий цвет).

gownColor=new Color(dress)

gownColor.setRGB(0x0000FF)

Цветовой код здесь предваряется префиксом 0х — это префикс шестнадцатеричных чисел. Чтобы пользователь имел возможность вводить цвета, обозначенные обычными шестнадцатеричными числами, необходимо преобразовать входной текст в число. В этом случае вместо функции Number следует использовать функцию parselnt(), указав основание системы счисления 16. К примеру, в следующей строке осуществляется ввод значения, находящегося в текстовом поле, с последующим преобразованием этого значения в шестна-дцатеричное число. hexV=parseInt(txtFldInput.16)

Поскольку шестнадцатеричные числа, помещаемые в текстовое поле txtFldInput, будут автоматически интерпретироваться как шестнадцатеричные; для них не нужно использовать префикс 0х. Фильм, рассматриваемый в следующем разделе, иллюстрирует механизм установки цветов для различных клипов.

Проект. Установка и изменение цветов

В фильме, который находится в файле setCotors.fla на компакт-диске, присутствуют три слоя:

  • Input (Ввод);
  • Buttons (Кнопки);
  • Movie Clips (Клипы).

Данный фильм представляет собой несложную учебную программу, позволяющую познакомиться с механизмом ввода шестнадцатеричных чисел и получить некоторые сведения о генерации сложных цветов для клипов. На рис. 8.1 показано изображение рожицы, составленной из овала и трех клипов: eyes (глаза), nose (HOC) и mouth (рот). Фильм позволяет изменять цвета этих клипов с помощью трех кнопок. Каждому клипу соответствует отдельная кнопка; таким образом, все объекты могут иметь различные цвета.

Рис. 8.1. Три кнопки позволяют менять цвет клипов, представляющих на рисунке глаза, нос и рот

Слой Input

Слой Input (Ввод) включает в себя единственное текстовое поле Input, для которого установлена максимальная длина строки, равная 6 символам. Кроме этого текстового поля в слое присутствует надпись, которая наряду с рамкой идентифицирует положение текстового поля на экране. В табл. 8.1 представлены характеристики текстового поля Input.

Таблица 8.1. Имя переменной и свойства текстового поля

Имя переменной Флажок Border/Bg Способ выравнивания Ограничение на длину
ColorIn Установлен По левому краю 6

Задав значение б в поле Max. Chars (Максимальное количество символов) в панели Text Options (Параметры текста), вы обеспечите автоматическое напоминание пользователю о том, что он может применить для задания цвета только 6 шестнадцатеричных цифр (эта константа соответствует FFFFFF, или 16 777 215 комбинациям цветов).

Слой Buttons

В слое Buttons (Кнопки) следует создать три кнопки, способные принимать шестнадцатеричное число, вводимое пользователем в текстовом поле, которое связано с переменной col or In, и переводить это число в обозначение цвета (также шестнадцатеричное), применяемое к клипу. В рассматриваемом образце фильма использованы стандартные кнопки вида Push Button Red (Красная кнопка) из набора LED Button Set (Набор кнопок LED), который можно найти в стандартной библиотеке Buttons.fla, но вы можете выбрать любую другую кнопку. В приведенных ниже текстах сценариев ссылки в инструкциях определения цвета представляют собой имена экземпляров клипов.

Кнопка Eyes

on (release) {

hexV = parselnt(colorln,16);

eyeCol or=new Col or (eyes);

eyeColor.setRGB(hexV);

}

Кнопка Nose

on (release) {

hexV = parselntCcolorln. 16);

noseColor= new Color(nose);

noseColor.setRGB(hexV);

}

Кнопка Mouth

on (release) {

hexV = parselntCcolorln. 16);

mouthColor = new Color(mouth);

mouthCol or . setRGB ( hexV ) ;

}

Слой Movie Clips

В слое Movie Clips (Клипы) прежде всего необходимо создать три клипа — для отображения глаз, рта и носа, — как показано ниже.

  1. Нарисуйте соответствующее изображение и выделите его. При этом вы можете использовать любые инструменты рисования; можно также импортировать файл, созданный в другой программе, например Freehand или Illustrator.
  2. Нажмите клавишу F8 и установите переключатель Movie Clip (Клип) в диалоговом окне Symbols Properties (Свойства символа).
  3. Нарисуйте в рабочей зоне овал, в котором будут размещаться все три клипа.
  4. Перетащите клипы Eyes (Глаза), Nose (Hoc) и Mouth (Рот) внутрь овала, как показано на рис. 8.2.

Рис. 8.2. Меняя число, представляющее цвет в формате RGB, вы можете раскрасить клипы в разные цвета, щелкая на соответствующих кнопках

  1. Нарисовав все клипы и разместив их в рабочей зоне таким образом, чтобы они образовали рожицу, последовательно выделяйте их, вводя в панели Instance (Экземпляр) имена eyes (глаза), nose (HOC) и mouth (рот).

Проект. Преобразование цвета

В фильме, содержащемся в файле transformColors.fla на компакт-диске, используются следующие слои:

  • Swatch MC (Клип образца);
  • Button (Кнопка);
  • Input (Ввод).

Наряду с методом setRGB(), непосредственно предназначенным для изменения цвета клипов в формате RGB, ActionScript предлагает разработчику метод setTransform(). Данный метод основан на использовании четырех основных цветовых кодов R (красный), G (зеленый), В (синий) и А (прозрачный). Значение каждого из основных цветов распадается на два поля, выражающих насыщенность цвета и оттенок. Интенсивность задается в диапазоне от -100 до 100, а смещение — в интервале от -255 до 255. Все величины представляются десятичными числами. При трансформации цветов требуется провести определенную подготовительную работу, так как для каждого цвета необходимо задать восемь значений. Ниже показано, каким образом можно создать фильм, в котором будут использоваться все восемь параметров; в зависимости от введенных пользователем значений будет меняться цвет образца, находящегося на экране. На рис. 8.3 показан начальный экран и список слоев фильма; все его компоненты здесь присутствуют в готовом виде.

Рис. 8.3. Восемь текстовых полей, клип с образцом цвета и кнопка — вот полный список объектов данного фильма

На рисунке присутствуют восемь текстовых полей, помеченных надписями от rа до ab. Эти надписи соответствуют именам фактических параметров, применяемых в вызовах метода setTransform(). Эти параметры определяются следующим образом:

  • rа — насыщенность красного цвета в диапазоне от -100 до 100;
  • rb — оттенок красного цвета в диапазоне от -255 до 255;
  • gа — насыщенность зеленого цвета в диапазоне от -100 до 100;
  • gb — оттенок зеленого цвета в диапазоне от -255 до 255;
  • bа — насыщенность синего цвета в диапазоне от -100 до 100;
  • bb — оттенок синего цвета в диапазоне от -255 до 255;
  • аа — степень прозрачности в диапазоне от -100 до 100;
  • ab — оттенок прозрачности в диапазоне от -255 до 255.

Слой Swatch MC

В слое Swatch MC (Клип образца) нужно создать обычный квадрат, который будет использоваться для демонстрации выбранного цвета, и преобразовать его в клип. Все изменения исходных данных, производимые пользователем, будут отражаться на цвете этого образца. Выполните следующие операции.

  1. Нарисуйте квадрат любого цвета (отличного от цвета фона).
  2. Выделите вновь созданный квадрат и нажмите клавишу F8. На экране появится диалоговое окно Symbol Properties (Свойства символа). Установите в этом окне переключатель Movie Clip (Клип) и щелкните на кнопке ОК.
  3. Выделите созданный на предыдущем шаге клип и введите имя экземпляра swatch (образец) в панели Instance (Экземпляр). Цвет клипа изменяется при обращении к нему.

Слой Button

Весь код на языке ActionScript в данном фильме размещается в сценарии единственной кнопки, находящейся в слое Button (Кнопка). Сценарий принимает информацию, находящуюся в текстовых полях, которые используются для ввода данных, и устанавливает соответствующие значения восьми параметров. Такая структура позволяет пользователю перебрать все возможные комбинации (их общее число составляет 1,0824322хЕ20).

Кнопка

on (release) {

transSwatch = new Color(swatch);

transSwatchTransform = new Object();

transSwatchTransform.ra = parselnt(raln);

transSwatchTransform.rb = parselnt(rbln);

transSwatchTransform.ga = parselnt(galn);

transSwatchTransform.gb = parselnt(gbln);

transSwatchTransform.ba = parselnt(baln);

transSwatchTransform.bb = parselnt(bbln);

transSwatchTransform.aa = parselnt(aaln);

transSwatchTransform.ab = parselnt(abln);

transSwatch.setTransform(transSwatchTransform);

}

При создании переменной, в которой будет храниться информация о цвете, обычно используется методика, схожая с форматом установки кода RGB в шестнадцатеричной системе счисления. Однако в качестве объекта, в котором будут трансформироваться все восемь параметров цвета, следует использовать объект Object. Вы можете назначить этому объекту любое имя, как и в случае с другими объектами и переменными. Все восемь имен параметров цвета связываются с именем объекта таким же образом, как имена свойств, которым присваиваются значения, размещенные в текстовых полях (см. описание слоя Input (Ввод) в этом разделе). По завершении ввода всех значений инструкция setTransform(objectName) выполняет собственно преобразование цвета. Обратите внимание на то, что имя объекта TransSwatch совпадает с именем клипа, а экземпляр последнего обладает именем swatch. (Взгляните в начало листинга — в первой строке указано, что именно идентификатор swatch представляет собой имя клипа, к которому нужно применить заданный цвет.) Являясь частью объекта, клип принимает установки, которые вы создали, поместив определенные значения в переменные-параметры на основе данных, находящихся в текстовых полях.

Для преобразования строковых данных в значения параметров используется функция parselntO. В отличие от приведенного выше примера с RGB-кодами, здесь не требуется задавать основание системы счисления, поскольку по умолчанию используются десятичные числа.

Слой Input

При создании восьми текстовых полей, размещаемых в слое Input (Ввод), надо соблюдать особую осторожность. Создайте первое поле как поле для ввода текста, выбрав соответствующее значение в раскрывающемся списке панели Text Options (Параметры текста). Затем сделайте семь копий этого поля и введите имена переменных на основе данных табл. 8.2. В качестве имен переменных, связанных с текстовыми полями, используются имена параметров с «суффиксом» In.

Таблица 8.2. Имена переменных и свойства текстовых полей

Имя переменной

Флажок Border/Bg

Способ выравнивания

Ограничение на длину

rain

Установлен

Полевому краю

4

rbln Установлен По левому краю 4
gain Установлен Полевому краю 4
gbln Установлен По левому краю 4
bain Установлен Полевому краю 4
bbIn Установлен Полевому краю 4
aaln Установлен Полевому краю 4
abln Установлен Полевому краю 4

Теперь запустите программу и посмотрите, что происходит при изменении тех или иных параметров. Попробуйте, к примеру, поместить нули в поля, предназначенные для ввода двух параметров определения насыщенности цвета, и значения 100 и 255 в поля, соответствующие параметрам прозрачности. Попробуйте также одновременно изменить оба параметра одного и того же цвета. На рис. 8.4 в полях, связанных с красным цветом, представлены данные, соответствующие терракотовому цвету. Если уменьшить значение, находящееся в поле rb, мы получим коричневый цвет.

Рис. 8.4. Эксперимент с заданием цвета

Получение информации о цвете объекта

Чтобы выяснить цвет объекта, необходимо узнать, какой именно цвет был приписан этому объекту последним. К примеру, чтобы получить информацию о цвете объекта eyeColor, можно использовать следующую инструкцию, где getlt — это имя переменной:

getIt=(eyeColor.getRGB()).toString(16);

Обратите внимание на то, что здесь мы имеем дело с преобразованием шест-надцатеричных чисел в строковые значения. Поскольку в процессе установки цвета в формате RGB применяются шестнадцатеричные числа, при преобразовании числа в строку необходимо задать параметр 16. Метод getTransform() действует аналогично, однако при его использовании основание системы счисления можно не задавать.

Объект Date

Объект Date содержит больше методов, чем любой другой объект, но все разнообразие его методов можно свести к выполнению двух основных задач — получение даты и установка даты. Под датой здесь разумеется информация как собственно о дате, так и о времени; кроме того, следует иметь в виду, что этот объект обеспечивает возможность для работы с местным временем и со стандартным временем по Гринвичу.

При открытии Web-страниц часто используется информация о текущем времени и дате, сгенерированная средствами языка JavaScript. В случае со страницами Flash аналогичная задача решается методом получения текущих значений времени и даты, установленных в компьютере. Отличительной особенностью методики датирования, принятой в языке ActionScript, является тот факт, что дата включает в себя сведения о стандартном времени. Если учесть, что Web представляет собой круглосуточно функционирующую всемирную среду, ссылка на стандартное время приобретает особую значимость. Пилоты с давних пор полагаются именно на стандартное время, поскольку самолеты часто пересекают границы временных зон. Все расписания прибытия и вылета самолетов всегда составляются в двух временных стандартах — местном и по Гринвичу. Приблизительно такая же ситуация в настоящее время сложилась и в Интернете.

Конструктор объекта Date

Объект Date обладает конструктором, в котором предусмотрены два режима создания объекта. В первом случае объект порождается в тексте сценария следующим образом:

hotDate = new Date();

Эта инструкция создает объект hotDate класса Date. Здесь отсутствует список параметров. В других ситуациях вам может понадобиться создать объект Date, который изначально содержит данные о конкретной дате и точном времени (с точностью до миллисекунды). Скажем, на сайте электронной коммерции может понадобиться организовать обратный отсчет времени, остающегося до появления на рынке нового продукта. Для создания объекта, содержащего информацию о дате выпуска новой продукции, можно воспользоваться второй формой конструктора объекта Date; в этом случае возможна организация обратного отсчета времени в фильме Flash.

launchDate= new Date (2004, 5, 6, 6, 22, 43, 998)

В приведенном выше конструкторе указана дата 6 июня 2004 года и определено время 6 часов 22 минуты 43 секунды 998 миллисекунд. Параметры конструктора задаются следующим образом.

  • Год. Годы двадцатого века нумеруются от 0 до 99. Для остальных веков требуется указывать номер года полностью, как в приведенном выше примере.
  • Месяц. Задается значениями от 0 до 11, соответствующими календарным месяцам с января по декабрь.
  • День. Используются целые числа от 1 до 31, обозначающие календарные дни месяца.
  • Час. Допустимые значения — от 0 до 23; 0 соответствует полуночи.
  • Минута. Принимаются значения от 0 до 59.
  • Секунда. Допустимые значения от 0 до 59.
  • Миллисекунда. Задается целым числом в интервале от 0 до 999.

Если приведенное выше определение объекта Date разместить в текстовом поле, на экране появится следующая строка:

Sun Jun 6 06:22:43 GMT-0500 2004

Миллисекунды здесь игнорируются, выражение GMT-0500 представляет собой параметрическую константу; номер года указывается в конце.

Методы получения и изменения информации о дате

Методы объекта Date, как уже говорилось, распадаются на две большие категории, позволяющие соответственно получать и устанавливать дату и время. Впрочем, форматы вызова методов обеих категорий весьма схожи. Методы получения даты могут вызываться следующим образом:

giveMeTime = new Date();

showTime = giveMeTime. getHours();

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

При установке времени и даты используются те же параметры, что и при получении информации о дате, однако в этом случае в качестве аргументов будут выступать не переменные, а значения соответствующих типов. В следующем сценарии демонстрируются отличия в технике установки секунд и получения информации о текущих секундах. При установке времени в объекте Date объект получает новое значение, которое будет оставаться неизменным, пока вы не повторите процедуру установки времени. Получая информацию о текущем времени, вы каждый раз будете иметь дело с новым значением. Если вы хотите удостовериться в этом, создайте текстовое поле, свяжите с ним переменную show и воспользуйтесь следующим сценарием.

anotherTime = new Date();

time2Go = new Date():

anotherTime.getSeconds();

time2Go.setSeconds(59);

show = time2Go-anotherTime;

Вы увидите на экране разность двух значений времени. Когда вы устанавливаете значение времени средствами объекта Date, это оказывает воздействие только на те поля даты и времени, которые соответствуют примененному вами методу. Для всех прочих элементов информационной структуры, содержащей данные о дате и времени, будут по-прежнему использоваться показания системных часов. Допустим, вы запустили приведенный выше сценарий в среду 23 августа 2000 года в 7 часов 41 минуту. При выполнении сценария изменятся только секунды: Wed Aug 23 07:41:59 GMT-0500 2000

Значение, полученное при выполнении метода getSeconds(), будет отличаться от нового значения даты лишь секундами. Ниже приводится список всех методов объекта Date и их параметров (dateObj здесь используется как имя произвольного объекта класса Date).

  • dateObj.getDate(). Возвращает день месяца (1-31).
  • dateObj. getDay(). Возвращает порядковый номер дня недели (0 — воскресенье, 6 — суббота).
  • dateObj.getFullYear(). Возвращает полный номер года (например, 2002).
  • dateObj.getHours(). Возвращает номер часа (значение находится в интервале от 0, что соответствует полуночи, до 23).
  • dateObj.getMilli seconds (). Возвращает текущую миллисекунду, основываясь на показаниях системных часов. Диапазон возвращаемых значений — от 0 до 999.
  • dateObj.getMinutes(). Возвращает текущую минуту (0-59).
  • dateObj.getMonth(). Возвращает информацию о текущем месяце. Месяцы последовательно нумеруются от 0 (январь) до 11 (декабрь).
  • dateObj.getSeconds(). Возвращает текущую секунду (в интервале 0-59).
  • dateObj.getTime(). Возвращает количество миллисекунд, прошедших между 1 января 1970 года и текущим моментом времени.
  • dateObj.getTimezoneOffset(). Возвращает разницу (в минутах) между показаниями ваших системных часов и стандартным временем.
  • dateObj.getUTCDate(). Возвращает стандартную дату.
  • dateObj.getUTCDay(). Возвращает порядковый номер дня недели по текущему стандартному времени (0 — воскресенье, 6 — суббота).
  • dateObj. getUTCFul I Year (). Возвращает полный номер года по текущему стандартному времени (например, 2002).
  • dateObj.getUTCHours(). Возвращает текущий номер часа по стандартному времени (от 0, что соответствует полуночи, до 23).
  • dateObj.getUTCMilliseconds(). Возвращает текущее значение стандартных миллисекунд (в интервале 0-999), основываясь на показаниях ваших системных часов.
  • dateObj.getUTCMinutes(). Возвращает стандартные минуты (0-59).
  • dateObj.getUTCMonth(). Возвращает порядковый номер стандартного месяца. Месяцы нумеруются от 0 (январь) до 11 (декабрь).
  • dateObj.getYear(). Возвращает уменьшенный на 1900 номер текущего года (например, для 2004 года будет возвращено число 104).
  • new Date(year, month, date, hour, min, sec, ms). Конструктор объекта со списком необязательных параметров (см. соответствующий раздел).
  • dateObj.setDate(date). Устанавливает день месяца, задаваемый в интервале от 1 до 31.
  • dateObj.setFifn Year (year, month, date). Устанавливает номер года; параметры month и date являются факультативными.
  • dateObj.setHours(hours, minutes, seconds, ms). Устанавливает номер часа; факультативно можно указать также минуты, секунды и миллисекунды.
  • dateObj.setMi11iseconds (ms). Устанавливает значение текущей миллисекунды.
  • dateObj.setMinutes(minutes, seconds, ms). Устанавливает текущую минуту; факультативно можно задать также секунды и миллисекунды.
  • dateObj.setMonth(month. date). Устанавливает текущий номер месяца; факультативно можно указать также день месяца.
  • dateObj.setSeconds(seconds, ms). Устанавливает текущую секунду; факультативно можно указать миллисекунды.
  • dateObj.setTime(value). Устанавливает текущую миллисекунду на основе произвольно задаваемого значения. (Вы можете передать этому методу любое значение value, например 2500, но это число не будет рассматриваться как обозначение времени.)
  • dateObj.setUTCDate(date). Устанавливает номер дня месяца по стандартному времени (1-31).
  • dateObj.setUTCFull Year (year, month, date). Устанавливает значение года по стандартному времени; факультативно задаются номер месяца и дата.
  • dateObj.setUTCHours(hours, minutes, seconds, ms). Устанавливает час по стандартному времени; факультативно могут задаваться также минуты, секунды и миллисекунды.
  • dateObj.setUTCMiniseconds(ms). Устанавливает миллисекунды по стандартному времени.
  • dateObj.setUTCMinutes(minutes, seconds, ms). Устанавливает минуты по стандартному времени; факультативно можно также указать секунды и миллисекунды.
  • dateObj.setUTCMonth (month, date). Устанавливает номер месяца по стандартному времени; факультативно можно указать также день месяца.
  • dateObj.setUTCSeconds(seconds, ms). Устанавливает секунды по стандартному времени; факультативно можно задать также миллисекунды.
  • dateObj.setYear(year, month, date). Устанавливает номер года, задаваемый целым четырехзначным числом (например, 2005); факультативно можно задать также значения месяца и дня.
  • toString(). Преобразует значение объекта в строку.
  • Date.UTC(year, month, date, hour, min. sec, ms). Устанавливает значения года, месяца, дня, часа, минуты, секунды и миллисекунды по стандартному времени.

Проект. Получение информации о времени и дате

В файле ShowDateAndTime.fla на компакт-диске содержится фильм, в котором используется несколько объектов, представляющих дату и время по Гринвичу и в местном стандарте. На рис. 8.5 показан экран этого фильма. Хотя данный фильм достаточно прост, текст сценария, определенного для кадра, довольно интересен. В фильме присутствуют три слоя:

  • Date (Дата);
  • World (Мир);
  • Background (Фон).

Рис. 8.5. В текстовых полях может отображаться как местное, так и стандартное время

Слой Date

В данном фильме практически вся информация, если не считать различных элементов фона, располагается в слое Date (Дата). Возможно, прежде чем приступать к работе над слоем Date, имеет смысл создать слои World (Мир) и Background (Фон). Затем можно протестировать и отладить текст сценариев, разместив текстовые поля в пустой рабочей зоне, и лишь после этого подключить готовый фон. Свойства текстовых полей перечислены в табл. 8.3.

Таблица 8.3. Имена переменных и свойства текстовых полей

Имя переменной

Флажок Border/Bg

Способ выравнивания

Timer Установлен Полевому краю

Zulu

Установлен

Полевому краю

 

  1. Щелкните на втором кадре и нажмите клавишу F5, чтобы вставить новый кадр. Весь код ActionScript, используемый в данном фильме/относится к кадрам. Поскольку показания системных часов постоянно обновляются, в фильме требуется создать как минимум два кадра, чтобы информация в первом из них также обновлялась.
  2. Дважды щелкните на первом кадре, чтобы открыть панель Frame Actions (Операции кадра) с полем редактора сценариев ActionScript. Введите следующий сценарий:

tellMonth = new Аггау("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

nowDate = new Date();

dom = nowDate.getDate();

month = nowDate.getMonth();

year = nowDate.getFullYear();

timer = tellMonth[month] + " "+ dom + ", " + year;

zuluHours = nowDate.getUTCHours();

zuluMinutes = nowDate.getUTCMinutes();

if (zuluMinutes<10) {

zuluMinutes = "0"+zuluMinutes;

}

zulu = zuluHours+":"+zuluMinutes;

В первой строке этого сценария создается массив, содержащий названия 12 месяцев. Нумерация элементов в массивах начинается с 0, а не с 1, что вполне соответствует требованиям метода getMonth() объекта Date — для обозначения первого календарного месяца года используется константа 0.

После этого в сценарии с помощью конструктора Date() создается объект nowDate класса Date. Информация этого объекта распределена по трем переменным, соответствующим числу, месяцу и году. Текстовое поле, с которым связана переменная timer, предназначено для вывода результата конкатенации их значений. Переменная month используется в качестве индекса массива. При этом выводится не номер, связанный с конкретной датой, а соответствующее название месяца.

Переменные zuluMinutes и zuluHours предназначены для хранения информации о стандартном времени. Объект nowDate вновь появляется в тексте сценария, поскольку с его помощью можно оперировать всеми объектами класса Date.

Условная инструкция позволяет определить, является ли значение переменной zuluMinutes меньшим, чем 10. Необходимость в такой проверке диктуется тем, что метод getUTCMinutes() в соответствующих случаях возвращает лишь одиночные цифры. К примеру, в 6 часов 5 минут на выходе окажется строка "6:5". Чтобы решить данную проблему, мы используем вставку нуля перед числом, выражающим количество минут, если возвращенное значение действительно оказалось меньше 10.

Наконец, стандартное время отображается на экране за счет объединения в переменной zulu значений zuluHours и zuluMinutes (рис. 8.6).

Рис. 8.6. В данном фильме отображается текущее значение локальной даты и стандартного времени в часах и минутах

СОВЕТ

УНИВЕРСАЛЬНЫЕ ЧАСЫ. Достаточно легко модифицировать файл ShowDateAnd-Time.fla, чтобы создать универсальные часы. Просто воспользуйтесь стандартным временем и заранее известной разницей в часовых поясах между местным и стандартным временем для главных городов мира: Лондона, Парижа, Берлина, Москвы, Пекина, Токио, Сан-Франциско, Чикаго и Блумфилда (штат Коннектикут). Вы вполне можете самостоятельно справиться с этой задачей. Постарайтесь собрать воедино все знания, которые вы приобрели, дочитав книгу до этой страницы.

Чтобы включить в рассмотрение день недели, можнодобавить к сценарию еще один массив и использовать метод getDay(). Приведенный ниже текст сценария демонстрирует, как именно это сделать.

dayRay=new Array("Sunday"."Monday","Tuesday","Wednesday". "Thursday"."Friday"."Saturday");

nowDate=new Date();

dayNow=nowDate.getDay();

output=dayRay[dayNow];

Слой World

Слой World (Мир) представляет собой стилизованную карту мира.

Слой Background

Слой Background (Фон) состоит из разноцветных прямоугольников. Здесь вы можете выбрать цвет фона для создаваемого фильма.

Объект Math

Объект Math отличается от других объектов, рассматриваемых в настоящем уроке, отсутствием необходимости создавать его экземпляры с помощью конструктора. Все методы выполняются непосредственно как часть самого объекта Math. Для всех методов и констант, связанных с объектом Math, применяется один из следующих двух форматов:

Math.exp(S);

Math.PI;

Имена большей части методов и констант «самоочевидны»; они связаны с математическими операциями, которые обозначаются практически так же.

Появление в системе Flash 5 тригонометрических методов практически устраняет необходимость написания каких бы то ни было математических функций для большинства пользователей. Вместо предлагавшейся в старых версиях функции гandom() теперь рекомендуется использовать метод Math. random(), хотя старая функция также сохранилась в языке ActionScript. Кроме того, в пакете Flash 5 появилось восемь новых констант.

Следующий пример фильма, который мы рассмотрим, позволяет пользователю ввести одно или два произвольных числа, на основе которых иллюстрируется механизм работы основных математических методов; фильм отображает на экране возвращаемые этими методами значения. Если в одном из полей, представляющих результат вычислений, вы увидите значение NaN (Not a Number — не число), это означает следующее: либо вы ввели число, выходящее за допустимые пределы, либо для данного метода необходимо задать два числа, в то время как вы предоставили лишь одно. Например, для вызова метода вычисления арктангенса atan2() требуется задать значения по двум координатам. Если вы введете лишь одно число, в соответствующем поле будет выведено значение NaN. Константы объекта Math перечислены в следующем списке:

  • Math.E — основание натурального логарифма (2,718), или константа Эйлера;
  • Math.LN10 — натуральный логарифм числа 10 (2,302);
  • Math.LN2 — натуральный логарифм числа 2 (0,693);
  • Math.LOG2E — логарифм числа е по основанию 2 (1,442);
  • Math.LOG10E — логарифм числа е по основанию 10 (0,434);
  • Math.PI — отношение длины окружности к ее диаметру (3,14159);
  • Math.SQRT1_2 - квадратный корень из 1/2 (0,707);
  • Math.SQRT2 — квадратный корень из 2 (1,414).

Методы, связанные с объектом Math, используются в следующем фильме в тексте сценария, который по существу представляет собой эталонный тест для всех методов объекта Math.

Проект. Применение методов объекта Math

Назначение большинства методов объекта Math иллюстрируется фильмом, который находится в файле MathObject.fla на компакт-диске. Обратите внимание на метод Math.random() в конце перечня методов — его рекомендуется использовать вместо существовавшей в прежних версиях функции random(). Особенность использования метода Math.random() состоит в том, что,верхняя граница диапазона для выбора случайного числа не передается этому методу в качестве аргумента, а используется как множитель. Значение нижней границы диапазона при необходимости можно вычесть из результата вычислений (см. листинг сценария для кадра 1). На рис. 8.7 показан начальный экран фильма и представлен его единственный слой.

Рис. 8.7. В этом фильме двадцать текстовых полей — 2 редактируемых поля для ввода чисел и 18 полей, в которых отображаются результаты работы методов объекта Math

Все объекты фильма находятся в его единственном слое; сценарий ActionScript следует ввести в кадре 1. Перед вводом сценария выделите кадр 2 и нажмите клавишу F5, чтобы добавить к слою новый кадр.

Кадр 1

m=new Array(18);

A = parseFloat(inputA):

В = parseFloat(inputB):

abs=Math.abs(A);

acos=Math.acos(A);

asin=Math.asin(A);

atan=Math.atan(A);

atan2=Math.atan2(A,B):

cei1=Math.cei1(A);

cos=Math.cos(A);

exp=Math.exp(A);

floor=Math.floor(A):

log=Math.log(A);

max=Math.max(A,B);

min=Math.min(A,B);

pow=Math.pow(A,B);

round=Math.round(A);

sqrt=Math.sqrt(A);

sin=Math.s1n(A);

tan=Math.tan(A);

ran=Int((Math.random ())*B)

Результаты работы всех методов поступают в текстовые поля, имена которых соответствуют методам объекта Math. Обычно не рекомендуется использовать имена методов и другие стандартные идентификаторы ActionScript в качестве имен переменных, однако в данном фильме эта рекомендация не принята во внимание, чтобы можно было наиболее естественным образом связать вызываемые методы с полями для вывода результатов и с надписями, размещенными рядом с этими полями. В табл. 8.4 представлены характеристики всех текстовых полей. Все поля относятся к типу Input Text (Набираемый текст) — именно этот вариант следует выбрать для них в панели Text Options (Параметры текста). Однако в действительности только два поля — inputA и inputB — обладают рамкой и собственным фоном и используются для ввода данных. В то время как на длину строк, которые вводятся в этих полях, никаких ограничений не накладывается, длина строк, выводимых в прочих текстовых полях, ограничена константой 4. В противном случае результаты вычислений, произведенных математическими методами, могли бы наложиться друг на друга. Имейте в виду, что в поле Max. Chars (Максимальное количество символов) панели Text Options задается максимальная длина строки с учетом всех составляющих ее символов. К примеру, строка -2.1 состоит из четырех символов: в это число входят знак «минус» и десятичная точка; именно такая длина является максимальной для наших текстовых полей.

Таблица 8.4. Имена переменных и свойства текстовых полей

Имя переменной

Флажок Border/Bg

Способ выравнивания

Ограничение на длину

InputA Установлен По левому краю 0
InputB Установлен Полевому краю 0

Abs

Снят

Полевому краю

4

 

Имя переменной

Флажок Border/Bg

Способ выравнивания

Ограничение на длину

Acos

Снят

По левому краю

4

Asin

Снят

Полевому краю

4

Atan

Снят

Полевому краю

4

atan2

Снят

Полевому краю

4

Cell

Снят

По левому краю

4

Cos

Снят

По левому краю

4

Exp

Снят

Полевому краю

4

Floor

Снят

По левому краю

4

Log

Снят

Полевому краю

4

Max

Снят

Полевому краю

4

Min

Снят

По левому краю

4

Pow

Снят

Полевому краю

4

Round

Снят

Полевому краю

4

Sin

Снят

Полевому краю

4

Bbln

Снят

Полевому краю

4

Sqrt

Снят

Полевому краю

4

Tan

Снят

Полевому краю

4

Ran

Снят

По левому краю

4

На рис. 8.8 показаны результаты работы фильма, соответствующие значениям, введенным в текстовых полях А и В. Поскольку для демонстрации работы метода Math.randomO используется множитель, введенный в поле В, вы должны ввести в этом поле какое-то значение. Это значение становится верхней границей диапазона генерируемых случайных чисел. (Учтите, что, когда вы запустите данный фильм, значение, выданное методом Math.randomO, скорее всего, не совпадет с представленным на рисунке.)

Рис. 8.8. Изменяя значения в редактируемых текстовых полях А и В, при желании можно с легкостью разобраться в назначении всех методов »

Объект Number

Объект Number выполняет две функции: обеспечивает корректную работу в системе Flash 5 сценариев в формате Flash 4 и предоставляет в распоряжение авторов фильмов ряд методов обработки числовых данных. Впрочем, подавляющее большинство методов обработки числовых данных покрывается объектом Math. Основную ценность объекта Number составляют его константы. Кроме того, при преобразовании данных часто применяются конструкторы объекта Number, каковыми являются Number.toString и Number. valueOf. В дальнейшем мы рассмотрим ряд примеров, демонстрирующих механизм их действия. Перечислим константы объекта Number:

  • Number. MAX_VALUE — наибольшее возможное число;
  • Number.MIN_VALUE — наименьшее возможное число;
  • Number.NaN — значение NaN (Not a Number — не число);
  • Number.NEGATIVE_INFINITY — отрицательная бесконечность;
  • Number.POSITIVE_INFINITY — положительная бесконечность.

Проект. Применение методов объекта Number

Для иллюстрации действия методов объекта Number мы воспользуемся фильмом, находящемся в файле Dec2Hex.fla на компакт-диске. Этот фильм создает объект Number и преобразует число, записанное в десятичной системе счисления, в строку, содержащую шестнадцатеричное представление этого числа. В фильме всего один слой, в первом кадре которого находится довольно компактный сценарий. Щелкните на кадре 2 и нажмите клавишу F5, чтобы добавить к фильму второй кадр. Это обеспечит непрерывное обновление информации, поскольку фильм при воспроизведении будет постоянно переключаться между первым и вторым кадрами. Рабочую зону фильма вы можете увидеть на рис. 8.9.

В единственном слое фильма Convert Me (Преобразуй меня) необходимо создать два текстовых поля и определить их параметры в соответствии с данными табл. 8.5.

Таблица 8.5. Имена переменных и свойства текстовых полей

Имя переменной

Флажок Border/Bg

Способ выравнивания

Ограничение на длину

NumIn Установлен Полевому краю 0

NumOut

Снят

Полевому краю

0

Затем введите в кадре 1 приведенный ниже сценарий. В этом сценарии создаются два объекта. Сначала порождается объект Number; в качестве источника данных для него указывается одно из текстовых полей. После этого создается объект String, один из методов которого обеспечивает вывод результата преобразования числа в строку, содержащую его шестнадцатеричное представление, в верхнем регистре.

Рис. 8.9. Текстовые поля в этом фильме используются для ввода десятичного числа и вывода записи этого числа в шестнадцатеричной системе счисления

Рис. 8.10. Десятичное и шестнадцатеричное представления числа не имеют между собой ничего общего. Попробуйте ввести свой вес в десятичной системе счисления и убедитесь, что шестнадцатеричное число представляет вас значительно более стройным человеком — ваши 150 фунтов мгновенно превратятся в какие-то 96

Кадр1

nuVal=new Number( parselnt(numln));

nuHex=new String();

nuHex=nuVal.toString(16);

numOut=nuHex.toUpperCase();

Результат работы фильма показан на рис. 8.10. Поскольку сценарий, находящийся в кадре 1, работает практически постоянно, изменение исходного десятичного числа представляет определенные трудности, но они не являются непреодолимыми. Возможно, вы предпочтете вынести этот сценарий в специально созданную кнопку, что сразу решит все проблемы, связанные с вводом исходных данных.

Объект Sound

Работа со звуком в ActionScript требует определенной предварительной подготовки и терпения, но в этом языке предусмотрены все необходимые средства, позволяющие автору фильма контролировать всю аудиоинформацию, поступающую к зрителю. Достаточно воспользоваться объектом Sound и его методами.

По принципу действия объекты класса Sound мало чем отличаются от других объектов. Прежде всего необходимо определить сам объект в следующем формате:

magSound=new Sound();

Здесь идентификатор magSound — это имя, назначаемое объекту Sound. После выполнения этой инструкции вы сможете управлять звуком, присоединяя к имени объекта Sound имена методов и указывая необходимые параметры. Большинство методов объекта Sound присоединяются в тексте сценария к его имени с помощью оператора . (точка), как показано ниже. MagSound.setVolume(75):

Такой формат используется для большинства методов. Однако с методом setTransform() все совершенно иначе; вопросы работы с ним мы обсудим в конце этого урока. Прочие методы представлены в следующем списке.

  • attachSound("soundName"). Присоединяет к фильму звуковой файл из библиотеки.
  • getPan(). Возвращает последнее по времени значение баланса в интервале от -100 до 100. Левой колонке соответствует отрицательное значение, а правой — положительное. Значение, равное 0, представляет равномерное распределение силы звука.
  • getVolume(). Возвращает значение в интервале от 0 до 100, представляющее уровень громкости.
  • setPan(). Устанавливает баланс между левой и правой колонками. Значения в интервале от -100 до -1 соответствуют большей громкости левой колонки, а в интервале от 1 до 100 — правой.
  • setVolume(). Применяется для установки уровня громкости; допустимые значения параметра находятся в интервале от 0 до 100; по умолчанию используется значение 100.
  • startCoff.loop). Начинает воспроизведение звукового файла; факультативные параметры позволяют задать время задержки (в секундах) и количество повторений.
  • stop(). Прерывает воспроизведение звукового файла; у этого метода никаких параметров нет.

Метод Sound.setTransform

Для вызова метода setTransform требуется указать объект класса Object, который должен быть связан с четырьмя параметрами работы колонок. После создания объекта класса Object с помощью соответствующего конструктора (при этом обеспечивается объединение значений указанных параметров) следует создать объект Sound, который будет обрабатывать эти значения с помощью метода setTransform. Четыре параметра, о которых идет речь, определяют уровень входного сигнала в процентах. Значения всех параметров находятся в диапазоне от -100 до 100:

  • ll — уровень воспроизведения в левой колонке сигнала, поступающего с левого входа, выраженный в процентах;
  • lr — уровень воспроизведения в левой колонке сигнала, поступающего с правого входа, выраженный в процентах;
  • rr — уровень воспроизведения в правой колонке сигнала, поступающего с правого входа, выраженный в процентах;
  • rl — уровень воспроизведения в правой колонке сигнала, поступающего с левого входа, выраженный в процентах.

По умолчанию для стереозвука установлены значения 100 для параметров ll и rr и 0 для параметров 1г и rl. Задавая другие комбинации, вы можете получать довольно интересные эффекты. В общем виде процедура настройки параметров звука с помощью метода setTransform выглядит следующим образом:

AlphaTransform=new Object();

Al phaTransform. ll =100:

Al phaTransform. lr=0;

Al phaTransform.rr=100;

Al phaTransform.rl =0:

A1phaSound=new Sound();

Al phaSound.setTransform(AlphaTransform);

Развернутый пример использования данного метода можно найти в проекте, который мы рассмотрим ниже.

Объекты для работы с XML и сокетами XML

В языке ActionScript предусмотрен ряд объектов, предназначенных для работы со сценариями на языке XML. Одни из этих объектов обеспечивают пересылку, создание, загрузку и обработку древовидных структур документов XML. Другие объекты обслуживают соединения через сокеты, позволяя разработчикам сценариев XML организовывать обмен данными между документами XML и серверами.

Поскольку в сферу рассмотрения данной книги язык XML не входит, а объекты, о которых идет речь, предназначены исключительно для пользователей XML, описания и примеры использования этих объектов в книгу не включены. Однако редактор сценариев ActionScript поддерживает работу с ними в полном объеме и автоматически включает их в текст сценария при перетаскивании из списков соответствующих языковых конструкций панели операций.

Проект. Управление звуком в двух колонках

В фильме, содержащемся в файле SoundJam.fla на компакт-диске, используются следующие слои:

  • Components (Компоненты) с клипами:
    • Left Slider (Левый ползунок);
    • Right Slider (Правый ползунок);
    • Speaker (Колонки);
    • Cat (Кошка);
  • Sound (Звук);
  • Background (Фон).

В этом проекте совместно используется несколько различных компонентов системы Flash и языка ActionScript. С помощью объекта Sound и метода Sound, setTransform() обеспечивается интерфейс, в котором пользователь с помощью двух ползунков может управлять уровнем звука в колонках, подключенных к компьютеру. При этом на экране при воспроизведении музыки пульсируют две нарисованные колонки; кроме того, в такт музыке на экране танцует кошка. На рис. 8.11 показан начальный экран фильма.

Фильм включает в себя три слоя и четыре клипа, в которых движение и звук дополняют друг друга. Пульсация колонок реализована путем их анимации; кошка движется по экрану синхронно с музыкой. Два ползунка позволяют увеличивать и уменьшать громкость звука в левой и правой колонках. В начале воспроизведения фильма ползунки находятся в нулевой позиции, а музыка играет на полную громкость. Когда пользователь щелкает на одном из ползунков, уровень звука в колонках уменьшается. Громкость меняется, если ползунок перетащить вверх к отметке -100 или вниз к отметке 100.

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

Слой Components

Львиная доля операций в этом фильме располагается в слое Components (Компоненты). Самыми важными компонентами фильма являются два клипа с изображением ползунков, поскольку именно эти клипы содержат кнопки, сценарии которых управляют изменением уровня звука в подключенных к компьютеру колонках.

Клип Left Slider

Левый и правый ползунки практически идентичны. Сценарий, связанный с левым ползунком, работает с параметрами левой колонки (ll и lr). Данный клип не реализован как стандартный ползунок, созданный на основе обработчика события onClipEvent (). Вместо этого используются сценарии кнопок. При применении обработчика события onClipEvent() пришлось бы ограничиться единственной операцией перетаскивания. Подход, при котором применяются кнопки, расположенные внутри клипов, позволяет обрабатывать любое количество событий перетаскивания. Поскольку между левым и правым ползунками много общего, мы подробно рассмотрим только процесс создания левого ползунка. Правый ползунок отличается лишь именем клипа и текстом сценария.

  1. Нажмите комбинацию клавиш Ctrl+F8 (Windows) либо Cmd+F8 (Macintosh), чтобы создать символ кнопки, который будет использоваться как ручка ползунка. Эту ручку можно сделать прямоугольной (см. рис. 8.11). Определите для данной кнопки имя handle (ручка). Щелкните на кнопке Scene 1 (Сцена 1), чтобы вернуться к работе с главной кинолентой.
  2. Вновь нажмите комбинацию клавиш Ctrl+F8 (Windows) либо Cmd+F8 (Macintosh), чтобы создать еще один символ. В диалоговом окне Symbol Properties (Свойства символа) установите переключатель Movie Clip (Клип) и введите имя ISlider (левый ползунок). Не выходя из режима редактирования символов, перетащите экземпляр кнопки handle (ручка) в центр окна (центр в режиме редактирования символов обозначается крестиком в рабочей зоне).
  3. Выделите экземпляр кнопки. Откройте панель операций и поле редактора сценариев ActionScript. Введите следующий текст сценария:

    on (press) {

    startDrag (_root.left, false, 227. 160. 227, 360);

    lSpeaker = (_root.left._y)-260;

    speakerSet = new Object();

    speakerSet.il = 1 Speaker;

    speakerSet.1 г = 0:

    CajunSound = new Sound();

    CajunSound.setVolume(100);

    CajunSound.setTransform(speakerSet);

    }

    on (release) {

    stopDrag (); }

  4. Щелкните на кнопке Scene 1 (Сцена 1), чтобы вернуться к работе с главной кинолентой. Проведите вертикальную линию длиной 200 пикселов, начинающуюся в позиции 160 по оси Y и в позиции 227 по оси X и спускающуюся к позиции 360 по оси Y. Для правильного расположения этой линии воспользуйтесь средствами панели Info (Информация).
  5. Перетащите экземпляр клипа ISlider (левый ползунок) в середину описанной линии. Клип следует поместить в позицию 260 по оси Y, чтобы он оказался строго по центру, как показано на рис. 8.11, с помощью панели Info (Информация).
  6. Откройте панель Instance (Экземпляр) с помощью комбинации клавиш Ctrl+I (Windows) либо Cmd+I (Macintosh), выделите клип ISlider (левый ползунок) и введите имя экземпляра left (левый). Во второй и третьей строках приведенного выше сценария идентификатор left адресует данный клип как ручку ползунка, регулирующего громкость.

ВНИМАНИЕ

Это очень важный шаг. Не забудьте ввести имя экземпляра клипа.

Клип Right Slider

Повторите шаги 1-6 со следующими отличиями:

  • проведите вертикальную линию длиной 200 пикселов, начинающуюся в позиции 160 по оси Y и в позиции 310 по оси X и спускающуюся к позиции 360 по оси Y;
  • используйте для клипа имя rSlider (правый ползунок);
  • введите в панели Instance (Экземпляр) имя экземпляра клипа right (правый).

on (press) {

startDrag (_root. right, false, 310, 160. 310, 360);

rSpeaker = (_root. right. _y)-260;

speakerSet = new Object();

speakerSet.rr = rSpeaker;

speakerSet. rl = 0;

CajunSound = new Sound();

CajunSound . setVol ume(100) ;

CajunSound. setTransform( speakerSet);

}

on (release) {

stopDrag ();

Клип Speaker

Колонки представлены на экране двумя экземплярами клипа Speaker (Колонка). В работе над этими колонками автору оказал помощь известный дизайнер Хиллман Кёртис (Hillman Curtis).

  1. Нажмите комбинацию клавиш Ctrl+F8 (Windows) либо Cmd+F8 (Macintosh), чтобы открыть диалоговое окно Symbols Properties (Свойства символа). Установите переключатель Movie Clip (Клип) и введите имя speaker (колонка). Щелкните на кнопке ОК, чтобы перейти в режим редактирования символов. Щелкните на кадре 15 и нажмите клавишу F5, чтобы вставить кадр.
  2. Нарисуйте окружность диаметром 90 пунктов, задав точный размер средствами панели Info (Информация). Выделив эту окружность, скопируйте ее с помощью команды Edit > Сору (Правка > Копировать) или воспользуйтесь комбинацией клавиш Ctrl+C (Windows) либо Cmd+C (Macintosh).
  3. Выполните команду Edit > Paste in Place (Правка > Вставить на место) и измените размеры окружности, задав ширину и высоту, равные 36 пунктам. Поскольку при этом у вас выделена первая копия окружности, вторая копия окажется внутри нее.
  4. Выделите большую окружность. Скопируйте и вставьте ее с помощью команды Edit > Paste in Place (Правка > Вставить на место); задайте ширину и высоту, равные 96 пунктам.
  5. Выберите инструмент заливки и установите режим радиальной заливки, выбрав зеленый цвет с помощью кнопки выбора цветов. Залейте центральную и вторую от центра окружность зеленым цветом.
  6. Не переключаясь на другие инструменты, щелкните на кнопке Transform Fill (Преобразовать заливку), расположенной в нижней части набора инструментов. Щелкните кнопкой мыши внутри маленького круга и перетащите центр заливки (белую точку) в позицию, соответствующую 11 часам на циферблате. Вновь щелкните на кнопке Transform Fill и перетащите центр заливки для второй окружности в позицию, соответствующую 5 часам на циферблате.

ПРИМЕЧАНИЕ

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

  1. Чтобы анимировать колонку, последовательно выделяйте каждый четвертый кадр и нажимайте клавишу F7, чтобы вставить пустой ключевой кадр. Затем выделяйте кадры, расположенные за пустыми ключевыми кадрами, и нажимайте клавишу F6, чтобы вставить новый ключевой кадр. После этого выделите колонку. Скопируйте ее в буфер обмена и вставьте в кадр, следующий за ключевым кадром, который расположен за первым пустым ключевым кадром. Выполните команду Window > Panels > Transform (Окно > Панели > Трансформация), чтобы открыть панель Transform (Трансформация). Установите флажок Constrain (Ограничить) и введите в полях масштабирования значение, соответствующее 60 процентам. На рис. 8.12 и 8.13 показан вид колонки в двух соседних непустых ключевых кадрах в режиме редактирования символов. В ключевом кадре, находящемся за вторым пустым ключевым кадром, вставьте копию изображения колонки, не меняя его первоначальных размеров. В ключевом кадре, расположенном за третьим пустым ключевым кадром, вставьте еще одну уменьшенную копию колонки.

Рис. 8.12. Большая колонка

Рис. 8.13. Маленькая колонка

  1. Щелкните на кнопке Scene 1 (Сцена 1), чтобы вернуться к работе с главной кинолентой. Перетащите в рабочую зону два экземпляра колонки и дорисуйте характерные коробки вокруг готовых мембран, как показано выше, на рис. 8.11.

Клип Cat

Рисунок кошки для этого клипа позаимствован из шрифта Лесли Кабарга (Leslie Cabarga), также известного дизайнера фильмов Flash. Один из символов шрифта Kobalt-Kartoon (этот шрифт можно найти на сайте www.flashfonts.com) был увеличен и преобразован в самостоятельный рисунок.

  1. Нажмите комбинацию клавиш Ctrl+F8 (Windows) либо Cmd+F8 (Macintosh), чтобы открыть диалоговое окно Symbols Properties (Свойства символа). Установите переключатель Movie Clip (Клип) и введите имя Cat (Кошка). Щелкните на кнопке ОК, чтобы перейти в режим редактирования символов. Щелкните на кадре 15 и нажмите клавишу F5, чтобы расширить киноленту до 15 кадров.
  2. Создайте изображение, которое вы хотите использовать. Для этого введите символ с изображением кошачьей морды из шрифта Kobalt-Kartoon в текстовом поле и установите размер шрифта, равный 96 пунктам. После этого, выделив кошачью морду, выполните команду Modify > Break Apart (Модифицировать > Разбить). Затем (кошачья морда по-прежнему выделена) выполните команду Modify > Transform > Scale and Rotate (Модифицировать > Трансформировать I Масштабировать и повернуть) и введите значение 150 в соответствующем поле диалогового окна Scale and Rotate (Масштабирование и поворот).
  3. Сделайте ключевыми кадры 5, 10 и 15. Введите следующие сценарии кадров:

    Кадр1

    _root.kcat. _rotation=-20:

    Кадр 5

    _root.kcat, _rotation=0;

    Кадр 10

    _root.kcat. _rotation=20;

    Кадр 15

    _root.kcat. _rotation=0;

ПРИМЕЧАНИЕ

Выделите клип Cat (Кошка) и введите имя экземпляра kcat в панели Instance (Экземпляр).

Эти сценарии последовательно осуществляют поворот рисунка на 20 градусов влево (-20), возврат в нормальную позицию (0), поворот на 20 градусов вправо (20) и вновь возврат в нормальную позицию (0).

  1. Щелкните на кнопке Scene 1 (Сцена 1), чтобы вернуться к работе с главной кинолентой. Перетащите экземпляр клипа Cat (Кошка) в рабочую зону и разместите его, как показано на рис. 8.11.

Слой Sound

В слое Sound (Звук) располагается единственный звуковой цикл. Следующая последовательность шагов описывает процесс создания данного слоя.

  1. Выполните команду File > Import (Файл > Импортировать) и найдите звуковой файл, который вы собираетесь импортировать в фильм.
  2. После импорта звукового файла вам, возможно, захочется переименовать его, чтобы избавиться от расширения .wav или .aif. Выделите имя звукового файла в окне Library (Библиотека) и щелкните на кнопке Properties (Свойства), расположенной в нижней части окна, чтобы открыть диалоговое окно Sound Properties (Свойства звука). Введите новое имя и установите другие нужные параметры звукового файла. Щелкните на кнопке ОК.
  3. Выделите слой Sound (Звук) и откройте панель Sound (Звук), дважды щелкнув на первом ключевом кадре в данном слое. В раскрывающемся списке Sound (Звук) этой панели выберите тот звуковой файл, который вы загрузили в окно Library (Библиотека). В списке Effect (Эффект) выберите пункт None (Нет); в списке Sync (Синхронизация) — вариант Event (Событие); наконец, в поле Loop (Число повторений) введите какое-нибудь число, например 999 — это количество повторений звука.

Слой Background

В слое Background (Фон) необходимо заполнить оставшуюся часть рабочей зоны фильма, как показано выше на рис. 8.11. В рассматриваемом примере фильма была взята за основу схема замечательного аниматора и иллюстратора Криса Кэдэди (Chris Cadady). В результате перевода рисунка из формата CMYK в формат RGB он оказался в «мире 216 безопасных цветов» (этот стандарт принят в Web) и сложилась ситуация, когда на разных компьютерах цвета могут выглядеть по-разному. На рис. 8.14 показан экран фильма в процессе работы; регуляторы громкости задействованы. (Даже если вы не сумели или поленились создать свой фильм, следуя приведенным инструкциям, обязательно познакомьтесь с готовым образцом на компакт-диске, чтобы посмотреть, насколько слаженно могут работать звук, цвет и анимация.)

Рис. 8.14. Изменяя положение ползунков, можно добиваться интересных звуковых эффектов

Что нового мы узнали?

В этом уроке мы научились...

  • Использовать объект Color для задания цветов объектов.
  • Использовать объект Date для получения и изменения информации о дате и времени.
  • Использовать объект Math и применять его методы.
  • Использовать объект Number и применять его методы.
  • Использовать объект Sound для управления звуком в фильмах Flash.

Знаете ли Вы, что событийно-управляемое программирование - это объектно-ориентированное программирование, при котором задаются реакции программы на различные события.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution