我正在使用RaphaelJS 2.0在一个div中创建几个形状。每个形状都需要能够在div的范围内独立地拖放。双击形状后,该形状需要旋转90度。然后可以再次拖放和旋转。
我已经将一些代码加载到fiddler上:http://jsfiddle.net/QRZMS/。基本上是这样的:
拖放功能已经可以使用,而且其中一个形状可以在双击时旋转。然而,有两个问题/问题:
我已经将一些代码加载到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, "<>");
});
}
拖放功能已经可以使用,而且其中一个形状可以在双击时旋转。然而,有两个问题/问题:
- 如何将旋转自动附加到每个形状上,而不必将每个项目引用硬编码到旋转方法中?即我只想绘制一次形状,然后自动公开它们的相同行为,这样它们可以分别独立地拖动/放置/旋转,而无需显式地将该行为应用于每个形状。
- 形状旋转后,它将无法正确拖动 - 好像拖动鼠标移动与形状的原始方向有关,而不是在旋转形状时更新。如何使其正常工作,以便可以轻松地多次拖动和旋转形状?