Опубликован: 04.11.2006 | Доступ: свободный | Студентов: 4621 / 581 | Оценка: 4.46 / 3.96 | Длительность: 39:17:00
Урок 15:

Привязка динамики к времени и кадрам

< Урок 14 || Урок 15: 12345 || Урок 16 >

В следующем упражнении мы создадим объект Data и применим различные методы для отображения текущей даты на экране.

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

Этот проект состоит из двух сцен – Alarm и Messages. В этом упражнении мы будем работать исключительно со сценой Alarm, и сосредоточимся на календаре, расположенном в левой половине. Правой половиной займемся в следующем упражнении. Слои в этой сцене называются в соответствии с содержимым.

Непосредственно под надписью "Today is:" вы видите четыре текстовых поля. Называются они (по порядку сверху вниз) currentDay, currentMonth, currentDate и currentYear. В этих полях будут динамически отображаться составляющие текущей даты:

  • currentDay. Будет показывать текущий день недели (например, "Saturday").
  • currentMonth. Будет показывать текущий месяц (например, "April").
  • currentDate. Будет показывать текущее число месяца (например, "27").
  • currentYear. Будет показывать текущий год (например, "2002").

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


  1. Откройте инспектор Параметры (Property), выделите верхнее текстовое поле – currentDay. Нажмите в инспекторе Параметры кнопку Символ (Character), чтобы отобразить диалоговое окно Свойства символов (Character Options).

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

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


  1. Откройте панель Действия, выделите кадр 1 слоя Actions и введите следующий скрипт:
stop();
today = new Date();

Первое действие воспрещает дальнейшее воспроизведение монтажного стола до особых на то указаний.

Следующая строка скрипта создает новый объект Date под именем today, как только начнется воспроизведение фильма. Поскольку в скобках мы не указали особых значений параметров, этот объект Data будет содержать текущую системную дату на компьютере пользователя (на момент воспроизведения фильма).

  1. В конец текущего скрипта добавьте следующие две строки:
nameOfDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
nameOfMonths = ["January", "February", "March", "April", "May", "June", "July", "August", 
"September", "October", "November", "December"];

Первая строка создает массив под названием nameOfDays ; вторая строка – массив nameOfMonths. Каждый массив содержит набор строковых значений, представляющих собой, соответственно, названия дней недели и месяцев. Для чего нужны эти массивы? Ну, это ведь люди называют дни и месяцы разными словами, а ActionScript – нет, он знает их только под номерами. Как вы вскоре увидите, с помощью простого трюка мы заставим наш проект превратить эти номера дней и месяцев в привычные нам названия.

  1. В конец текущего скрипта добавьте следующую строку:
currentDay.text = nameOfDays[today.getDay()];

Этим действием мы выводим информацию в текстовом поле currentDay. Поясним, как это получается.

С помощью метода getDay() (в квадратных скобках) мы определяем день недели даты, хранящейся в объекте today. Этот метод возвратит некое значение от 0 до 6 (напомним, 0 соответствует воскресенью, 6 – субботе). Допустим, метод вернул значение 3; это значение подставляется вместо выражения в квадратных скобках, и мы получаем такую строку:

currentDay.text = nameOfDays[3];

Как видите, в поле currentDay будет отображено значение элемента с индексом 3 массива nameOfDays, то есть строковое значение "Wednesday". Как видите, мы, зная, что метод getDay() выдает числовые значения от 0 до 6, создали на предыдущем шаге массив, элементами которого являются названия дней недели, причем этих элементов имеют индексы тоже от 0 до 6.

  1. Добавьте в конец текущего скрипта следующую строку:
currentMonth.text = nameOfMonths[today.getMonth()];

Этим действием мы выводим информацию в текстовом поле currentMonth. Принцип действия тот же, что и на предыдущем шаге – метод getMonth() выдает некоторое числовое значение от 0 до 11, из массива nameOfMonths берется строковое значение элемента с соответствующим индексом.

  1. Добавьте в конец текущего скрипта следующую строку:
currentDate.text = today.getDate();

Это действие выводит информацию в текстовом поле currentDate. Здесь использован метод getDate(), возвращающий числовое значение от 1 до 31, соответствующее числу месяца для даты, хранящейся в объекте today. В данном случае нам требуется именно число, поэтому никакого массива для преобразования номера в строку здесь не нужно.

  1. Добавьте в конец текущего скрипта следующую строку:
currentYear.text = today.getFullYear();

Это действие выводит информацию в текстовом поле currentYear. Здесь использован метод getFullYear(), возвращающий числовое значение, соответствующее году даты, хранящейся в объекте today (например, 2002). В данном случае опять нас вполне устраивает число, и массива для преобразования в строку не требуется.

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

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


  1. Закройте тестовый фильм и сохраните ваш проект под именем makeMyDay2.fla.

Мы продолжим работу с этим проектом в следующем упражнении урока.

< Урок 14 || Урок 15: 12345 || Урок 16 >
Салтанат Бектегенова
Салтанат Бектегенова

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

 

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

Вот задание:

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