
Описание часов
Это красивые простые часы.
Я решил, что легче будет собрать всё в один клип (movie clip), чтобы потом Вы смогли поместить ваши часы на сцене (stage) как захотите. Итак, в основном:
шаг первый:
Нажмите ctrl + F8 чтобы создать новый клип (movie clip). Не имеет значения как вы его назовете. Откройте Библиотеку (Library), нажав ctrl + L, и перетащите клип на сцену (stage).
шаг второй:
Откройте клип, дважды щелкнув по нему в библиотеке. Нажмите правой кнопкой на второй кадр клипа и выберите "Вставить кадр"("insert frame")*.
//ИМХО, надо сначала сделать всё в первом кадре, а уж потом вставлять новый. И проще нажать F6, а не лазить по меню. -прим. Bright'a
третий шаг:
Внутри клипа сделайте два динамических текстовых поля (dynamic text). Дайте одному имя переменной (variable name) "time" (без кавычек), а другому "datefinal".
четвертый шаг:
Нажмите на первом кадре и откройте панель Действия (actions panel). Это место, где начинается самое забавное.
//А как еще перевести "This is where the fun begins."? :) -прим. Bright'a
Сначала мы хотим получить все значения системных часов пользователя и назначить их отдельным переменным.
Скопируйте этот код в панель Действия кадра (Actions Frame):
mydate = new Date();
seconds = mydate.getSeconds();
minutes = mydate.getMinutes();
hours = mydate.getHours();
day = mydate.getDay();
date = mydate.getDate();
month = mydate.getMonth();
year = mydate.getFullYear();
пятый шаг:
Некоторые из этих переменных, если мы вставим их в текстовое поле, дадут странный результат. Например, если сегодня воскресенье переменная "day" выдаст только "0", если понедельник она выдаст "1" и т.д. Так же с месяцами. И когда стандартные цифровые часы будут показывать время как 9:03:05 наши часы покажут 9:3:5, что смотрится странно. Чтобы исправить всё это, мы используем эти кусочки кода:
пятый шаг(a):
>>чтобы изменить номер дня на его название, мы используем оператор if.
if (day==0){
day = "Sunday"
} else if (day==1){
day = "Monday"
} else if (day==2){
day = "Tuesday"
} else if (day==3){
day = "Wednesday"
} else if (day==4){
day = "Thursday"
} else if (day==5){
day = "Friday"
} else if (day==6){
day = "Saturday"
}
Этот код сообщает программе "если день равен 0 тогда день воскресенье" и т.д.
>> так же и для месяцев
if (month==0){
month = "January"
} else if (month==1){
month = "February"
} else if (month==2){
month = "March"
} else if (month==3){
month = "April"
} else if (month==4){
month = "May"
} else if (month==5){
month = "June"
} else if (month==6){
month = "July"
} else if (month==7){
month = "August"
} else if (month==8){
month = "September"
} else if (month==9){
month = "October"
} else if (month==10){
month = "November"
} else if (month==11){
month = "December"
}
пятый шаг(b):
Если вы захотите оставить месяцы как числа, то вместо этого огромного, загруженного операторами if, просто напишите этот код:
month = month + 1;
пятый шаг(c):
>> чтобы минуты и секунды отображались правильно, мы опять используем оператор if.
if (minutes<10) {
minutes = "0"+minutes;
}
if (seconds<10) {
seconds = "0"+seconds;
}
Это немного сложно. Этот код говорит программе "Если значение минут меньше чем 10, тогда надо добавить ноль в начало". Это немного странный тип сложения - это тип, когда вы добавляете 5 к 3 и получаете 53, а не 8. Это сработало, потому что 0 мы добавляли в кавычках "", которые сделали его строковым значением (string). Для большей информации смотрите variables 101 tutorial.
шаг шестой:
Чтобы поменять формат времени с 24-часового на 12-часовой, мы используем этот код (если вы хотите оставить 24-часовой формат времени, пропустите это):
if (hours>12) {
hours = hours-12;
ampm = "PM";
} else {
ampm = "AM";
}
if (hours == 0) {
hours = 12;
}
Этот код говорит программе "Если значение часов больше 12, тогда вычитать 12 из этого значения" и поменять статус am/pm индикатора на PM.
И затем счетчик, например, если часы показывают 12 и значение станет 0, поменяет значение часов на 12 так как полночь не может быть 0 AM.
шаг седьмой:
Здесь становится интереснее. Здесь мы собираем вместе то, что будет отображено в текстовых полях.
Используйте этот код, чтобы собрать вместе время (12 часов):
time = ((hours) + ":" + (minutes) + ":" + (seconds) + " " + (ampm));
Или этот код (24 часа):
time = ((hours) + ":" + (minutes) + ":" + (seconds));
Этот код собирает строку с отображением времени - так вы получаете часы, потом ":", затем минуты и так далее.
Используйте этот код, чтобы собрать вместе даты (с именами):
datefinal = ((day) + " " + (date) + " " + (month) + " " + (year));
Принцип такой же, вы получаете день недели, потом вставляете пробел, потом дату и т.д.
Используйте этот код, чтобы собрать вместе даты (только номера, если вы используете это выполните шаг пять(b), а не пять(a)):
datefinal = ((date) + "/" + (month) + "/" + (year));
Имейте в виду, что это австралийский формат даты, чтобы сделать его американским просто поменяйте местами переменные "date" и "month".
Это всё! Просто нажмите Ctrl + Enter чтобы протестировать фильм.
*Это делается, чтобы значения часов обновлялись сами. Вместо большого и сложного способа, это срабатывает 12 раз за каждую секунду (или так часто как вы установили значение FPS), и каждый раз, возвращаясь к 1 кадру, флэшка снова проверяет значение системных часов. Это означает, что как только секунды поменяются, скрипт "поймает" новое значение и обновит часы.
//Довольно запутанно получилось. Скажу проще - это надо чтобы часы обновлялись, а как это работает не важно... :) -прим. Bright'a