处理;删除“;javascript中的事件与Raphael

处理;删除“;javascript中的事件与Raphael,javascript,raphael,Javascript,Raphael,我正试图用Raphael用javascript构建一个棋盘游戏,其中包括让用户拖放一些图片。我知道Raphael objects有一种方法,可以拖动图片 我希望用户仅根据规则移动一个片段(由图片表示)。为此,我可以用这种方式编写一个方法move(在本例中,一个工件只能垂直移动一个正方形): 上面的代码允许用户在棋盘上规则允许的唯一方格中移动棋子。我更希望它有明显的不同: -用户可以在黑板上的任何位置拖动一块 -当工件被放置在正方形上时,如果工件按照规则移动,那么工件将被放置在用户放置它的地方。否

我正试图用Raphael用javascript构建一个棋盘游戏,其中包括让用户拖放一些图片。我知道Raphael objects有一种方法,可以拖动图片

我希望用户仅根据规则移动一个片段(由图片表示)。为此,我可以用这种方式编写一个方法move(在本例中,一个工件只能垂直移动一个正方形):

上面的代码允许用户在棋盘上规则允许的唯一方格中移动棋子。我更希望它有明显的不同: -用户可以在黑板上的任何位置拖动一块 -当工件被放置在正方形上时,如果工件按照规则移动,那么工件将被放置在用户放置它的地方。否则,它将被放回其初始方形


这是我无法做到的第二点,因为我不知道如何处理拉斐尔的事件。有人能帮忙吗?

在Raphael中没有
drop
事件,而是
元素。drag
有一个
onend
的事件处理程序。这就是你定义“下降”的地方


请参阅演示。请注意当元素停止拖动时调用的
up
处理程序(查看源代码)。

在Raphael中没有
drop
事件,而是
元素。drag
具有
onend
的事件处理程序。这就是你定义“下降”的地方


请参阅演示。请注意当元素停止拖动时调用的
up
处理程序(查看源代码)。

我正在尝试测试您的答案,但显然不允许我访问您的演示。你确定吗?是的我想做什么就做什么。我没有把我的控件放在move函数中,而是把它放在up函数中。谢谢!NP很高兴这有帮助。作为额外的一点,它不必被称为“向上”。拖动的定义是,只需确保发送正确。我正在尝试测试您的答案,但显然我不允许访问您的演示。你确定吗?是的我想做什么就做什么。我没有把我的控件放在move函数中,而是把它放在up函数中。谢谢!NP很高兴这有帮助。作为额外的一点,它不必被称为“向上”。拖动的定义是,只需确保正确发送即可。
move = function (dx, dy) {
    document.getElementById("xCoord").innerHTML = dx;
    document.getElementById("yCoord").innerHTML = dy;
startSquareX = coordToSquare(this.ox);
startSquareY = coordToSquare(this.oy);
newSquareX = coordToSquare(this.ox+dx);
newSquareY = coordToSquare(this.oy+dy);
var deltaX = newSquareX - startSquareX;
var deltaY = newSquareY - startSquareY;       
if((deltaX*deltaX + deltaY*deltaY)===1) {
    this.attr({x: this.ox + dx, y: this.oy+dy});                       
} else {
    this.attr({x: this.ox, y: this.oy});
}}