UPDATE: см. https://free-comments.dreamwidth.org/5918.html?thread=320030#cmt320030
У меня в разделе публицистики уже давно было сделано, чтобы цвет фона имитировал реальное время суток (символизируя актуальность размещаемых в этом разделе материалов). Но прописано это было тупо для экватора - весь год в 6 утра восход, в 6 вечера закат. Я решил, наконец, довести до ума, чтобы можно было задавать любую широту и насколько местное время отличается от солнечного (т.е. разница между полуднем по вашим часам и временем, когда солнце достигает высшей точки на вашей долготе). Вся математика правильная. Все параметры передаются верно. Но анимация НЕ РАБОТАЕТ КОРРЕКТНО. Быстрее, чем надо. Хотя все ее параметры правильны, и отладочные печати это подтверждают!!! В момент загрузки страницы все правильно, дальше начинается расхождение. Причем оно не сбрасывается вызовом той ф-ции, которая устанавливает параметры анимации - только перезагрузкой страницы
Суть алгоритма: вычисляется долгота дня (правильно!), соотв. время заката и рассвета отстоит от полудня на половину этого числа. Длительность анимации - 12 ч (туда, потом обратно), текущая фаза определяется как текушее время минус его разница с солнечным (чтобы из-за минуса не получилось отрицательное число в начале суток, добавляется еще 24 часа). Все эти параметры прописываются для анимации, которая дальше должна спокойно себе идти. А она идет с неправильной скоростью! Причем независимо от того, меняются в дальнейшем параметры или нет - правильную фазу возвращает только перезагрузка страницы.
См. исходник (там фрейм, надо выбрать frame source по правому клику). Отладочные печати выводятся в консоль. Часть кода, в которой происходит все описанное, вот:
У меня в разделе публицистики уже давно было сделано, чтобы цвет фона имитировал реальное время суток (символизируя актуальность размещаемых в этом разделе материалов). Но прописано это было тупо для экватора - весь год в 6 утра восход, в 6 вечера закат. Я решил, наконец, довести до ума, чтобы можно было задавать любую широту и насколько местное время отличается от солнечного (т.е. разница между полуднем по вашим часам и временем, когда солнце достигает высшей точки на вашей долготе). Вся математика правильная. Все параметры передаются верно. Но анимация НЕ РАБОТАЕТ КОРРЕКТНО. Быстрее, чем надо. Хотя все ее параметры правильны, и отладочные печати это подтверждают!!! В момент загрузки страницы все правильно, дальше начинается расхождение. Причем оно не сбрасывается вызовом той ф-ции, которая устанавливает параметры анимации - только перезагрузкой страницы
Суть алгоритма: вычисляется долгота дня (правильно!), соотв. время заката и рассвета отстоит от полудня на половину этого числа. Длительность анимации - 12 ч (туда, потом обратно), текущая фаза определяется как текушее время минус его разница с солнечным (чтобы из-за минуса не получилось отрицательное число в начале суток, добавляется еще 24 часа). Все эти параметры прописываются для анимации, которая дальше должна спокойно себе идти. А она идет с неправильной скоростью! Причем независимо от того, меняются в дальнейшем параметры или нет - правильную фазу возвращает только перезагрузка страницы.
См. исходник (там фрейм, надо выбрать frame source по правому клику). Отладочные печати выводятся в консоль. Часть кода, в которой происходит все описанное, вот:
( Read more... )
У кого есть идеи, что тут не так - пишите в комментариях здесь.