Всем привет,
Есть проблемка...
На страницу динамически добавляются блоки с текстом ( пусть размер будет 200*100 px). При этом они не должны пересекатся. При добавлении нового блока функция проверяет каждый блок на пересечение с новым блоком, и если они пересекаются - продолжает поиск. Но благодаря такой рекурсии скрипт виснет даже при 2-х блоках на странице. Есть ли другие пути решения? или как оптимизировать скрипт чтобы все работало более менее быстро.
Вот пример скрипта
function randomXY(list)
{
m = parseInt(1);
n = parseInt(79);
xv = Math.floor( Math.random() * (n - m + 1) ) + m;
m = parseInt(30);
n = parseInt(50);
yv = Math.floor( Math.random() * (n - m + 1) ) + m;
per = false;
$.each(list, function(index, value) {
inc = getInc();
a = {x:xv,y:yv,x1:xv+inc.x,y1:yv+inc.y};
b = {x:value.x,y:value.y,x1:value.x+inc.x,y1:value.y+inc.y};
if(checkp2(a,b))
{
per = true;
}
});
if(per)
{
return randomXY(list);
}
else
{
res = {x:xv,y:yv};
return res;
}
}
функция checkp2 проверяет пересечение. входной параметр List - список уже имеющихся блоков на страницу