Дострочное пересдача экзамена
|
Привязка динамики к времени и кадрам
В следующем упражнении мы создадим объект Data и применим различные методы для отображения текущей даты на экране.
- Откройте файл makeMyDay1.fla из папки Lesson15/Assets.
Этот проект состоит из двух сцен – Alarm и Messages. В этом упражнении мы будем работать исключительно со сценой Alarm, и сосредоточимся на календаре, расположенном в левой половине. Правой половиной займемся в следующем упражнении. Слои в этой сцене называются в соответствии с содержимым.
Непосредственно под надписью "Today is:" вы видите четыре текстовых поля. Называются они (по порядку сверху вниз) currentDay, currentMonth, currentDate и currentYear. В этих полях будут динамически отображаться составляющие текущей даты:
- currentDay. Будет показывать текущий день недели (например, "Saturday").
- currentMonth. Будет показывать текущий месяц (например, "April").
- currentDate. Будет показывать текущее число месяца (например, "27").
- currentYear. Будет показывать текущий год (например, "2002").
В каждом поле стиль текста будет разным, чтобы наш календарь выглядел красиво.
- Откройте инспектор Параметры (Property), выделите верхнее текстовое поле – currentDay. Нажмите в инспекторе Параметры кнопку Символ (Character), чтобы отобразить диалоговое окно Свойства символов (Character Options).
В самом низу этого окна вы видите бессмысленный набор букв. Эти буквы – набор символов, специфическое начертание которых мы хотим внедрить в фильм для этого поля. Названия всех дней недели состоят только из букв, которые здесь перечислены. Это текстовое поле будет содержать динамически генерируемый текст, и внедрение шрифта позволит отображать текст в этом поле со сглаживанием граней.
Для прочих текстовых полей календаря тоже указан тот или иной внедряемый набор символов (в зависимости от того, что должно отображать каждое поле).
- Откройте панель Действия, выделите кадр 1 слоя Actions и введите следующий скрипт:
stop(); today = new Date();
Первое действие воспрещает дальнейшее воспроизведение монтажного стола до особых на то указаний.
Следующая строка скрипта создает новый объект Date под именем today, как только начнется воспроизведение фильма. Поскольку в скобках мы не указали особых значений параметров, этот объект Data будет содержать текущую системную дату на компьютере пользователя (на момент воспроизведения фильма).
- В конец текущего скрипта добавьте следующие две строки:
nameOfDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; nameOfMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
Первая строка создает массив под названием nameOfDays ; вторая строка – массив nameOfMonths. Каждый массив содержит набор строковых значений, представляющих собой, соответственно, названия дней недели и месяцев. Для чего нужны эти массивы? Ну, это ведь люди называют дни и месяцы разными словами, а ActionScript – нет, он знает их только под номерами. Как вы вскоре увидите, с помощью простого трюка мы заставим наш проект превратить эти номера дней и месяцев в привычные нам названия.
- В конец текущего скрипта добавьте следующую строку:
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.
- Добавьте в конец текущего скрипта следующую строку:
currentMonth.text = nameOfMonths[today.getMonth()];
Этим действием мы выводим информацию в текстовом поле currentMonth. Принцип действия тот же, что и на предыдущем шаге – метод getMonth() выдает некоторое числовое значение от 0 до 11, из массива nameOfMonths берется строковое значение элемента с соответствующим индексом.
- Добавьте в конец текущего скрипта следующую строку:
currentDate.text = today.getDate();
Это действие выводит информацию в текстовом поле currentDate. Здесь использован метод getDate(), возвращающий числовое значение от 1 до 31, соответствующее числу месяца для даты, хранящейся в объекте today. В данном случае нам требуется именно число, поэтому никакого массива для преобразования номера в строку здесь не нужно.
- Добавьте в конец текущего скрипта следующую строку:
currentYear.text = today.getFullYear();
Это действие выводит информацию в текстовом поле currentYear. Здесь использован метод getFullYear(), возвращающий числовое значение, соответствующее году даты, хранящейся в объекте today (например, 2002). В данном случае опять нас вполне устраивает число, и массива для преобразования в строку не требуется.
- Командой Управление > Проверить фильм (Control > Test Movie) запустите тест проекта.
Как только фильм запустится, текстовые поля календарного листка на экране заполнятся информацией, соответствующей сегодняшней дате.
- Закройте тестовый фильм и сохраните ваш проект под именем makeMyDay2.fla.
Мы продолжим работу с этим проектом в следующем упражнении урока.