【发布时间】:2011-12-28 06:42:24
【问题描述】:
我正在使用 RaphaelJS 2.0 在 div 中创建多个形状。每个形状都需要能够在 div 的范围内独立拖放。双击一个形状后,该形状需要旋转 90 度。然后可以再次拖放和旋转它。
我已经在 fiddler 上加载了一些代码:http://jsfiddle.net/QRZMS/。基本上是这样的:
window.onload = function () {
var angle = 0;
var R = Raphael("paper", "100%", "100%"),
shape1 = R.rect(100, 100, 100, 50).attr({ fill: "red", stroke: "none" }),
shape2 = R.rect(200, 200, 100, 50).attr({ fill: "green", stroke: "none" }),
shape3 = R.rect(300, 300, 100, 50).attr({ fill: "blue", stroke: "none" }),
shape4 = R.rect(400, 400, 100, 50).attr({ fill: "black", stroke: "none" });
var start = function () {
this.ox = this.attr("x");
this.oy = this.attr("y");
},
move = function (dx, dy) {
this.attr({ x: this.ox + dx, y: this.oy + dy });
},
up = function () {
};
R.set(shape1, shape2, shape3, shape4).drag(move, start, up).dblclick(function(){
angle -= 90;
shape1.stop().animate({ transform: "r" + angle }, 1000, "<>");
});
}
拖放工作正常,双击时其中一个形状会旋转。但是,有两个问题/疑问:
如何自动将旋转附加到每个形状上,而无需将每个项目引用硬编码到旋转方法中? IE。我只想绘制一次形状,然后让它们全部自动暴露于相同的行为,因此它们可以独立地拖放/旋转,而无需将该行为显式应用于每个形状。
旋转形状后,它不再正确拖动 - 好像拖动鼠标移动与形状的原始方向有关,而不是在旋转形状时更新。我怎样才能让它正常工作,以便可以无缝地多次拖动和旋转形状?
非常感谢您的任何指点!
【问题讨论】:
标签: drag-and-drop raphael rotation