динамическое обновление картинки (рисуемой)
У меня есть картинка, которую я рисую с помощью asp.net. Это фон дива, который я обновляю по движению мыши... что-то вроде карты, в общем.
function mouseup(e) { var scroll = getScrollXY(); c = e.clientX+scroll[0]; d = e.clientY+scroll[1]; document.getElementById("dda").style.backgroundImage = "url(WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + ")"; } Так вот. Картинка эта рисуется секунду с чем-то, и безбожно мигает во время загрузки, что очень не приятно. Можно как-то сделать, чтобы предыдущая картинка сохранялась, пока изображение полностью не прорисуется? |
Прочитал про кэширование изображения. Попытался сделать так.
var im = new Image(); im.src="WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + ""; document.getElementById("dda").style.backgroundImage = im.src; До этого поэкспериментировал с картинкой, смена изображения работает корректно. Что не так? Почему у div'а не меняется фон? ... Гм, попытка 3. var im = new Image(); im.src="WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + ""; document.getElementById("dda").style.backgroundImage = "url("+im.src+")"; Заработало, но почему-то, в отличие от аналогичных действий с img, мигание никуда не делось. |
Если честно, то не совсем ясно что вы делаете. Если я правильно понял, то вы не загрузили изображение, т.е. не закэшировали его до начала смены картинки.
Подгрузка кэшированных изображений должна происходить до начала выполнения смены. Сначала грузим, потом вызываем, а не вместе. Ps: var im = new Image(); im.onload = function () { document.getElementById("dda").style.backgroundImage = "url("+im.src+")"; } im.src="WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + ""; |
Цитата:
|
Gozar, о, точно, спасибо, заработало. Это мигание изрядно раздражало -_-
Kolyaj, а это так ресурсозатратно? Гм... ну, вы бы что предложили? |
Если картинка генерируется секунду с чем-то, как думаете, это затратно или нет?
Да и вы, наверное, сейчас на локалхосте тестируете и не учитываете сетевые задержки. |
Угу. Не учитываю, да. Секунда - это максимум, что получилось выжать с GDI++. Мне просто не понятно, какой здесь еще подход можно применить. Карта так и так динамическая, а при масштабировании еще и полный перерасчет делается.
|
Цитата:
|
Ясно. Спасибо за инфу.
|
Часовой пояс GMT +3, время: 00:08. |