Tôi nghĩ rằng tôi đã cố định vấn đề của bạn: http://dl.dropbox.com/u/169269/group_drag.svg
Vấn đề là rằng kéo đơn được thay đổi cx của vòng tròn và cy thuộc tính, nhưng kéo nhóm đã thực hiện việc chuyển đổi toàn bộ nhóm. Tôi đã đơn giản hóa mọi thứ vì thế tất cả các công trình sử dụng biến đổi và bạn chỉ cần một bộ chức năng cho cả hai:
function startMove(evt, moveType){
x1 = evt.clientX;
y1 = evt.clientY;
document.documentElement.setAttribute("onmousemove","moveIt(evt)")
if (moveType == 'single'){
C = evt.target;
}
else {
C = evt.target.parentNode;
}
}
function moveIt(evt){
translation = C.getAttributeNS(null, "transform").slice(10,-1).split(' ');
sx = parseInt(translation[0]);
sy = parseInt(translation[1]);
C.setAttributeNS(null, "transform", "translate(" + (sx + evt.clientX - x1) + " " + (sy + evt.clientY - y1) + ")");
x1 = evt.clientX;
y1 = evt.clientY;
}
function endMove(){
document.documentElement.setAttributeNS(null, "onmousemove",null)
}
Bây giờ bạn gọi startMove (evt, 'đơn') để di chuyển một đối tượng duy nhất, hoặc startMove (evt, 'group') để di chuyển nhóm thuộc về nó.
Nguồn
2011-10-15 16:12:31
Cảm ơn bạn rất nhiều. Đó là chính xác những gì tôi cần với sự đơn giản dưới mui xe. Hạn chế duy nhất những gì tôi có thể thấy bây giờ là sự vắng mặt của hỗ trợ Firefox (một lần nữa). Nó hoạt động tuyệt vời dưới Chromium, và trên Midori và Chrome không hoạt động trên localhost !! ?? Có một số "ma thuật đen" mà tôi phải khám phá (Linux Mint OS). Dù sao Peter, cảm ơn bạn đã trả lời ngay lập tức của bạn, và hướng dẫn tốt đẹp trên các trang web của bạn. – Alex
Khi thay thế "NaN" bằng số nó hoạt động trên localhost. – Alex
Tuyệt vời! 1 cho sự sang trọng. –