Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Частая смена изображения (https://javascript.ru/forum/events/26260-chastaya-smena-izobrazheniya.html)

lead-in 02.03.2012 15:08

Частая смена изображения
 
Есть задача часто (от одного до неск. раз) в секунду отображать картинку в браузере. Зачем это нужно объяснять долго, но в 2-х словах: картинка - это фактически скриншот приложения, а отображать в браузере нужно для того чтобы из браузера поверх этой картинки рисовать кнопки и пр. элементы управления.
Есть плагин JS который генерирует событие каждый раз когда картинка должна быть обновлена, вот обработчик этого события:

var CurrScreen; // текущий номер отображаемой картинки
var PrevScreen; // предыдущий номер отображённой картинки


ppsPNG.onChange = function(event)
{
CurrScreen = ppsPNG.ppsObj.ScreenIndex; // получение номера новой картинки
if (CurrScreen != PrevScreen)
{
// если новый номер не равен номеру предыдущей картинки:
ms = new Date();
filename = "/tmp/OpenGLScreen.png?" + ms.getTime();
document.getElementById("img").innerHTML = "<img src='" + filename + "' width=200 height=100 />";
PrevScreen = CurrScreen;
}
}
ppsPNG.open("/pps/tcs/nbgm/status", "0");

Всё вроде бы нормально работает, НО каждый раз при смене изображения оно мерцает, есть какая-то возможность избежать этого? Или проблема вообще не относится к JS?

Skipp 02.03.2012 15:15

document.getElementById("img").innerHTML = "<img src='" + filename + "' width=200 height=100 />";

Таким образом вы постоянно делаете лишние телодвижения....
Замените на вот это
document.getElementById("img").src=filename;

lead-in 02.03.2012 15:28

Цитата:

Сообщение от Skipp (Сообщение 160929)
document.getElementById("img").innerHTML = "<img src='" + filename + "' width=200 height=100 />";

Таким образом вы постоянно делаете лишние телодвижения....
Замените на вот это
document.getElementById("img").src=filename;

Спасибо огромное! Помогло! С JS столкнулся постольку-поскольку задача подобная появилась, 3 часа ковырялся без толку.


Часовой пояс GMT +3, время: 01:36.