Я создаю небольшую игру html5 с холстом.HTML5: getImageData с onmousemove замедляет мое приложение в Firefox
В холсте есть много отображаемых спрайтов, и один из них автоматически перемещается слева направо. Остальные - статика.
Когда я перемещаю мышь на холст, я рисую все спрайты во временном холсте, и я использую getImageData, чтобы найти спрайт, на который мышь закончилась.
Но getImageData делает медленным аномально движущийся спрайт в Firefox.
Так каково решение, чтобы избежать этого замедления?
Вот мой код:
function getSelectedObject(array_objects)
{
//Clear the temporary canvas :
tmpcx.clearRect(0, 0, tmpc.width, tmpc.height);
/*Search the right sprite object :*/
for(var i = array_objects.length-1; i >= 0; i--)
{
array_objects[i].draw(tmpcx);
imageData = tmpcx.getImageData(mouse_x, mouse_y, 1, 1);
component = imageData.data;
if(component[3] > 0)
{
//Return the sprite object found :
return array_objects[i];
}
else
{
tmpcx.clearRect(0, 0, tmpc.width, tmpc.height);
}
}
return false;
}
canvas.onmousemove = function(event)
{
selectedObject = getSelectedObject(array_objects);
}
Так каково решение, чтобы избежать этого замедления? – totoaussi
Непонятно, что вы пытаетесь * выполнить * здесь. Вам нужен движущийся спрайт на холсте, который отслеживает положение мыши? –
Перемещение спрайта - это просто проверить эффективность приложения: если движущийся спрайт замедляется, это означает, что приложение имеет плохую производительность. Обычно движущийся спрайт не должен замедляться. – totoaussi