我正在尝试使用 Raphael 用 javascript 构建棋盘游戏,其中涉及让用户拖放一些图片。我知道 Raphael 对象有一个方法drag可以拖动图片。
我希望用户仅根据规则移动一块(由图片表示)。为此,我可以编写一个方法move以这种方式(在这个例子中,一块只能垂直移动一个正方形):
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});
}}
上面的代码使用户能够在规则允许的棋盘中唯一的方格中移动棋子。我更希望有明显的不同: - 用户可以将棋子拖到棋盘上任何她想要的地方 - 当棋子放在正方形上时,如果棋子按照规则移动,那么棋子就会放在用户的位置把它丢了。否则,将其放回其初始方格。
这是我无法做到的第二点,因为我不知道如何处理 Raphael 的“drop”事件。有人可以帮忙吗?