Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 4:

Объекты и их использование

< Урок 3 || Урок 4: 12345 || Урок 5 >

Использование объекта color

Чтобы использовать объект Color, нужно сначала создать его при помощи конструктора. Синтаксис создания нового объекта типа Color следующий:

myColor = new Color(shirt);

Приведенная строка ActionScript создает новый экземпляр объекта 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() ; в следующем упражнении мы покажем, как это сделать.

В данном упражнении мы создадим несложную интерактивную сцену, в которой можно будет, нажав несколько кнопок, изменить цвет волос клоуна.

  1. Откройте файл Clown1.fla из папки Lesson04/Assets.

Графическое содержание уже создано и размещено на сцене, так что мы можем сосредоточить все внимание на программировании изменения цвета фильма-символа. На основном монтажном столе три слоя: Background (фон), Clown Hair (волосы клоуна) и Buttons (кнопки).

Слой Clown Hair содержит экземпляр фильма-символа с именем hair. Цвет этого экземпляра мы и будем менять при помощи ActionScript.

В слое Buttons имеется пять круглых цветных кнопок. К этим кнопкам мы присоединим скрипты, изменяющие цвет волос клоуна.

  1. Откройте панель Действия, выделите красную кнопку и введите следующий скрипт:
on (release) {
  hairColor = new Color(hair);
  hairColor.setRGB(0xCC0000);
}

Этот скрипт дает Flash указание, когда кнопка будет отпущена после нажатия, создать новый объект Color с именем hairColor и связать этот объект с экземпляром фильма-символа hair. Во второй строке используется метод setRGB() для изменения цвета объекта Color (а следовательно, экземпляра hair ), на CC0000 – это шестнадцатеричное значение соответствует красному цвету, как раз такому, каким окрашена кнопка.

  1. Выделите желтую кнопку и присоедините к ней этот скрипт:
on (release) {
  hairColor = new Color(hair);
  hairColor.setRGB(0xFFCC00);
}

Скрипт идентичен тому, что мы присоединили к красной кнопке, изменился лишь код цвета в методе setRGB() – на сей раз значение соответствует желтому цвету.

  1. Выделите зеленую кнопку и присоедините к ней скрипт:
on (release) {
  hairColor = new Color(hair);
  hairColor.setRGB(0x009900);
}

Цвет зеленой кнопки кодируется как 009900, и это значение использовано на этот раз в методе setRGB().

  1. Выделите синюю кнопку и присоедините к ней скрипт:
on (release) {
  hairColor = new Color(hair);
  hairColor.setRGB(0x336699);
}

То же, что и для трех предыдущих кнопок – создается объект Color, который меняет цвет экземпляра фильма-символа hair.

Что ж, давайте проверим нашу работу!

  1. Выполните команду Управление > Проверить фильм (Control > Test Movie). Нажмите каждую из четырех кнопок; наблюдайте, как меняется цвет.

Каждый раз при щелчке на какой-либо из кнопок Flash создает новый объект типа Color и связывает его с экземпляром фильма-символа hair. Затем используется метод setRGB() объекта Color, и цвет этого экземпляра изменяется.

Примечание В этом упражнении объект Color заново создается каждой кнопкой, хотя на самом деле это излишне – объект, будучи однажды создан, становится частью монтажного стола. Любые дальнейшие изменения этого объекта можно сделать при помощи доступных ему методов.

А теперь давайте запрограммируем случайный выбор цвета волос клоуна.

  1. Закройте тестовый фильм и вернитесь в среду разработки. Выделите центральную, радужную, кнопку и присоедините к ней скрипт:
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, а затем применяется цвет, закодирован созданным нами случайным числом.

Примечание Подобным образом можно получить (генерировать) с помощью ActionScript более 16 миллионов цветовых оттенков.

  1. Выполните команду Управление > Проверить фильм (Control > Test Movie), и нажмите несколько раз радужную кнопку.

Как видите, цвет экземпляра фильма-символа hair меняется случайным образом! Вы можете даже модифицировать эту "технологию", чтобы менялся случайным образом лишь оттенок цвета – в определенном диапазоне.

  1. Закройте тестовый фильм и сохраните свою работу как Clown2.fla.

Теперь вы знаете, как в любое время изменить цвет любого экземпляра фильма-символа.

< Урок 3 || Урок 4: 12345 || Урок 5 >
Салтанат Бектегенова
Салтанат Бектегенова

Дострочное пересдача экзамена

 

Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003