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


Создание кода


Код, который выполняет все вышеописанные действия, - это cценарий 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, стрелки будут указывать на соответствующее место.

Рисунок 6.11 Руки и хвост (то есть стрелки часов), направленные четко вверх, соответствуют 12:00:00. Когда вы зададите параметр _rotation, стрелки будут указывать в соответствующем направлении

Проблема состоит в том, что устройство будет работать не совсем как обычные часы. Например, на рис. 6.10 часовая стрелка указывает на 9 часов. Она будет продолжать указывать на отметку 9, даже когда будет 9:59, а затем в 10:00 сразу передвинется на отметку 10. В настоящих часах часовая стрелка будет в течение часа постепенно передвигаться, пока не достигнет отметки 10 в 10 часов. Для того чтобы получить такой результат, необходимо немного увеличивать угол часовой стрелки каждую минуту и угол минутной стрелки каждую секунду, Приведем соответствующий код:




Начало  Назад  Вперед