Вопрос о обработчике событий onstart для Element.drag в недавно объявленном Snap.svg.
Целью приведенного ниже кода является регистрация обработчиков событий для начала и остановки перетаскивания (onstart/onstop) на объекте svg.
var s = Snap(800,600);
var bigCircle = s.circle(300,150,100);
bigCircle.drag(null,
function(){
console.log("Move started");
},
function(){
console.log("Move stopped");
}
);
Сообщения консоли работают нормально при перетаскивании и остановке перетаскивания, но нуль переопределяет функцию onmove по умолчанию - в результате фактическое перетаскивание не происходит. Как передать что-то, что говорит: "Я не хочу возиться со стандартным onmove"?
(Примечание. Я бы предпочел зарегистрировать обработчик событий с помощью назначения, например, знакомого onClick, но это другое дело.)
Примечание добавлено через несколько часов: Документация и примеры Raphael.js дают некоторые подсказки. По крайней мере, сейчас я знаю, как передать правильную функцию onmove, которая обеспечивает поведение по умолчанию:
var s = Snap(800,600);
var bigCircle = s.circle(300,150,100);
start = function() {
this.ox = parseInt(this.attr("cx"));
this.oy = parseInt(this.attr("cy"));
console.log("Start move, ox=" + this.ox + ", oy=" + this.oy);
}
move = function(dx, dy) {
this.attr({"cx": this.ox + dx, "cy": this.oy + dy});
}
stop = function() {
this.ox = parseInt(this.attr("cx"));
this.oy = parseInt(this.attr("cy"));
console.log("Stop move, ox=" + this.ox + ", oy=" + this.oy);
}
bigCircle.drag(move, start, stop);