Аналоговые часы
Подготовка ролика
При помоши объекта Date можно создать интересные часы. Переводя значения часов, минут и секунд текущего времени в градусы, вы можете задать параметр "rotation трех различных клипов таким образом, чтобы они двигались, как стрелки часов.
На рис. 6.10 показан внешний вид таких часов. Короткая рука обозначает часовую, длинная – минутную, а хвост – секундную стрелки.
Рис. 6.10. Часы показывают 1 час 45 минут и 10 секунд
На рисунке не видно, что руки (и хвост) часов двигаются подобно стрелкам настоящих часов. Эти действия выполняются в три этапа. Вначале полученное значение текущего времени помешается в переменные hour, minute и second. Затем значения этих переменных преобразуются в значения углов. Далее полученные значения используются для задания параметра _rotation трех клипов, представляющих руки и хвост.
Создание кода
Код, который выполняет все вышеописанные действия, – это сценарий onClipEvent (enterFrame), помещаемый в клип. Код можно посмотреть в файле Simpleclock.fla.
onClipEvent(enterFrame) {
// Узнаем текущее время.
now
=
new
Date();
hour
=
now.getHours();
minute
=
now.getMinutes();
second
=
now.getSeconds();
// Конвертируем в значение для 12-часового дня.
if
(hour
>
12
) {
hour
-
=
12
;
}
// Рассчитываем углы для поворота стрелок.
hourAngle
=
360
*
hour
/
12
;
minuteAngle
=
360
*
minute
/
60
;
secondAngle
=
360
*
second
/
60
;
/// Поворачиваем сами ролики
_root[
"hour hand"
]._rotation
=
hourAngle;
_root[
"minute hand"
]._rotation
=
minuteAngle;
_root[
"second hand"
]._rotation
=
secondAngle;
}
Чтобы определить значение углов, значение времени делится на наибольшее возможное значение и умножается на 360. Например, значение минут делится на 60, в результате чего получается значение между 0 и 1, а затем умножается на 360, что дает значение угла между 0° и 360°. Чтобы стрелка была 12-, а не 24-часовой, из значения часов вычитается 12.
Результатом каждой операции является угол от 0° до 360°. 0° обозначает 0 (или 12) часов, 0 минут, 0 секунд. В данном случае изображения всех трех клипов, представляющих стрелки часов, будут указывать вверх (рис. 6.11). Затем, после задания параметра "rotation, стрелки будут указывать на соответствующее место.