Аналоговые часы
Подготовка ролика
При помоши объекта 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, стрелки будут указывать на соответствующее место.
