Показать сообщение отдельно
  #3 (permalink)  
Старый 31.07.2012, 02:47
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Хорошее замечание

function makeDraggable(el, dragOptions) {
    var drag, dx, dy;
    
    el.addEventListener('mousedown', function(e) {
        var position = getPosition(this);
        // тут еще остались маргины, как от них избавиться?
        dx = position.left - e.clientX - parseInt(getStyle(this, 'margin-left'));
        dy = position.top - e.clientY - parseInt(getStyle(this, 'margin-top'));
        this.style.zIndex = maxZindex++;
        
        if (dragOptions.start) {
            dragOptions.start();
        }
        
        drag = true;
    }, false);
    
    document.addEventListener('mousemove', function(e) {  
        if (drag) {
            el.style.left = e.clientX + dx + 'px';
            el.style.top = e.clientY + dy + 'px';
            
            if (dragOptions.drag) {
                dragOptions.drag();
            }
        }
    }, false);
    
    document.addEventListener('mouseup', function() {
        if (drag) {
            if (dragOptions.end) {
                dragOptions.end();
            }
        
            drag = false;
        }
    }, false);
}

function collisionDetection(x1, y1, w1, h1, x2, y2, w2, h2) { 
    return x1 < (x2 + w2) && y1 < (y2 + h2) && (x1 + w1) > x2 && (y1 + h1) > y2; 
}

function isCollide(a, b) { 
    var p1 = getPosition(a);
    var p2 = getPosition(b); 
    return collisionDetection(p1.left, p1.top, a.offsetWidth, a.offsetHeight, 
    p2.left, p2.top, b.offsetWidth, b.offsetHeight); 
}
Ответить с цитированием