Иллюстрированный самоучитель по созданию Flash-игр

Аналоговые часы

Подготовка ролика

При помоши объекта Date можно создать интересные часы. Переводя значения часов, минут и секунд текущего времени в градусы, вы можете задать параметр "rotation трех различных клипов таким образом, чтобы они двигались, как стрелки часов.

На рис. 6.10 показан внешний вид таких часов. Короткая рука обозначает часовую, длинная – минутную, а хвост – секундную стрелки.

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.