Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: Часы по гринвичу
Flash Zone Forum > Macromedia Flash > Начинающим
suvorov
Код не декомпилированный.

Подскажите пожалйуста, как заставить часы ходить, точнее они у меня ходят если я время беру с компа, а если по гринвичу то все, все стрелки на 12

Код
function initClock(mov, offset)
{
    mov.onEnterFrame = function ()
    {
        myDate = new Date();
        myDate = myDate.getTimezoneOffset();
        myDate.setMinutes (myDate.getMinutes() + offset );
        hour = myDate.getHours();
        min = myDate.getMinutes();
        sec = myDate.getSeconds();
        this.m3._rotation = min * 6 + sec * 1.000000E-001;
        this.s3._rotation = sec * 6;
        this.h3._rotation = hour * 30 + min * 5.000000E-001;
    };
} // End of the function
initClock(CL, 0);
initClock(CL2, -120);
initClock(CL3, -150);


Вроде как все правильно, но ничего не работает.

Если убрать строчки

myDate = myDate.getTimezoneOffset();
myDate.setMinutes (myDate.getMinutes() + offset );

То все функционирует....но тут и время другое получается
chingachgoog
Вот тут:

Код
myDate = myDate.getTimezoneOffset();



myDate получается как обычное число (минуты разницы)

а вот тут:

Код
myDate.setMinutes (myDate.getMinutes() + offset );


почему-то это обычное число пытаются представить как объект класса Date, да еще и вызвать у него метод getMinutes )))
MustLive
Цитата
Часы по гринвичу

suvorov

Как тебе уже подсказал chingachgoog, проблема во второй операции присваивания в твоём коде. Добавь в код новую переменную, в частности offset (исходя из последующего твоего кода), и тогда всё заработает.

Код
offset = myDate.getTimezoneOffset();
suvorov
Мужики, собственно не совсем понял первый пост, но вернее понял, что ошибка но как исправить...

Извините за тупку)

Добавил переменную offset

получилось вот так:

Цитата
function initClock(mov, offset)
{
mov.onEnterFrame = function ()
{
myDate = new Date();
myDate = myDate.getTimezoneOffset();
myDate.setMinutes (myDate.getMinutes() + offset );
offset = myDate.getTimezoneOffset();
hour = myDate.getHours();
min = myDate.getMinutes();
sec = myDate.getSeconds();
this.m3._rotation = min * 6 + sec * 1.000000E-001;
this.s3._rotation = sec * 6;
this.h3._rotation = hour * 30 + min * 5.000000E-001;
};
} // End of the function
initClock(CL, 0);
initClock(CL2, -120);
initClock(CL3, -150);


Часики стоят...
HaWK
Вы добавили эту строчку:
Код
offset = myDate.getTimezoneOffset();

А эту убрать забыли:
Код
myDate = myDate.getTimezoneOffset();


И не нужно каждый раз при смене кадра создавать новый объект Date.

Код
myDate = new Date();
function initClock(mov, offset)  {
mov.onEnterFrame = function () {
offset = myDate.getTimezoneOffset();
myDate.setMinutes (myDate.getMinutes() + offset );
hour = myDate.getHours();
min = myDate.getMinutes();
sec = myDate.getSeconds();
this.m3._rotation = min * 6 + sec * 1.000000E-001;
this.s3._rotation = sec * 6;
this.h3._rotation = hour * 30 + min * 5.000000E-001;
};
} // End of the function
initClock(CL, 0);
initClock(CL2, -120);
initClock(CL3, -150);
suvorov
Спасибо большое! Все получилось, правда я чуть с ума не сошел, в итоге оказалось что у меня код в ActionScript 1.0 копилировался) Ещё раз огромное спасибо всем, кто откликнулся!
MustLive
suvorov, всегда пожалуйста.

Обрати внимание на то, что при вызове функции initClock задаётся offset:

Код
Прототип функции:
function initClock(mov, offset)

Вызов:
initClock(CL, 0);

И значение getTimezoneOffset() у тебя в изначальном коде вообще не использовалось (т.к. неправильно присваивалось). Учитывая, что у тебя в коде к минутами прибавлялся offset, я порекомендовал присвоить переменной offset значение myDate.getTimezoneOffset() (не обратив внимание на вызов функции).

А у тебя то функция задумана с возможностью задания сдвига (в минутах). И в новом коде заданный сдвиг при вызове функции игнорируется (учитывается только getTimezoneOffset()). Поэтому ты должен определиться, что тебе нужно: учитывать getTimezoneOffset, задавать сдвиг при вызове функции или и то и другое. И соответственно в коде использовать первое, второе или оба. В последнем случае нужно будет код для присваивания переменной offset заменить на следующий:
Код
offset += myDate.getTimezoneOffset();

Это учтёт и переданный функции offset и getTimezoneOffset.
Русская версия IP.Board © 2001-2017 IPS, Inc.