我遇到了以下问题,希望有人能帮助我:
我正在使用JavaScript库Raphael。现在,我想做的是,当我有许多Raphael SVG元素时,通过“矩形选择”简单地选择更多元素,即从图的背景开始拖动鼠标以创建选择矩形(我希望我足够清楚),并移动在此矩形中的元素。
目前,我找到了像这样的东西(有人从我的之前的一个问题发表了这个):
var paper = Raphael(0, 0, '100%', '100%');
var circle = paper.circle(75, 75, 50);
var rect = paper.rect(150, 150, 50, 50);
var set = paper.set();
set.push(circle, rect);
set.attr({
fill: 'red',
stroke: 0
});
var ox = 0;
var oy = 0;
var dragging = false;
set.mousedown(function(event) {
ox = event.screenX;
oy = event.screenY;
set.attr({
opacity: .5
});
dragging = true;
});
set.mousemove(function(event) {
if (dragging) {
set.translate(event.screenX - ox, event.screenY - oy);
ox = event.screenX;
oy = event.screenY;
}
});
set.mouseup(function(event) {
dragging = false;
set.attr({
opacity: 1
});
});
这段代码可以在jsfiddle上执行。但是,正如你所看到的,它通过将所有元素添加到 Raphael set 中选择了所有元素。
现在,我认为我的问题将通过以下解决:
- 进行矩形选择
- 将在矩形内的节点添加到 Raphael set 中
- 仅移动所选项目(即仅移动在 Raphael set 中的项目与 set.mousemove)
我现在的问题集中在前两个问题上。
有任何想法吗?
先感谢您!