스냅 내에서 어떤 식 으로든 생각할 수 없습니다. 아마도 당신이 이벤트를 가짜로 만들어서 원하는대로 보내면 어떨지 궁금합니다 (아마도 jquery가 유용 할 것입니다).
드래그를 에뮬레이션하는 것이 매우 까다 롭다 고 가정하기 때문에이 기능을 호출하는 것보다 이점이 있는지 확실하지 않습니다. 그래서 필요한 부분을 놓칠 수도 있지만 아이디어가 될 수 있습니다! 당신이 당신의 요소에 대해 단지 dragStart, dragMove 및 dragEnd을 정의한 경우
s = Snap(400, 620);
var r = s.rect(10,10,100,100);
r.click(function() { console.log('click') });
r.drag(
function(x,y) {
console.log('move',x,y);
this.transform('t' + x + "," + y);
},
function(x,y) {
console.log('start',x,y);
},
function() {
console.log('end');
}
);
var e = new Event("mousedown");
e.clientX = 34;
e.clientY = 35;
r.node.dispatchEvent(e); //not sure if dispatch works on all browsers
var m = new Event("mousemove");
m.clientX = 40;
m.clientY = 40;
document.dispatchEvent(m);
var u = new Event("mouseup");
document.dispatchEvent(u);
출처
2014-04-02 12:11:19
Ian
그냥 무엇을하려고하는지 이해하려고합니다 ... 원하는대로 어쨌든 호출 할 수있는 자신의 스냅 끌기 처리기 (move, start, end funcs)를 정의 할 수 없습니까? 또는 .drag()를 사용해야합니까? – Ian
필자는 함수를 정의했지만 수동으로 호출하지 않고 단순히 이벤트를 트리거 할 수 있으면 좋을 것입니다. 그것이 Raphael http://stackoverflow.com/questions/12059592/triggering-raphael-events-externally에서 작동하는 것처럼 보입니다. – graphmeter
'drag()'을 사용하면 dragMove, dragStart 및 dragEnd에 대한 세 개의 개별 객체를'events' 배열에 넣을 수 있습니다. 그게 아니라면, 제 생각에는 Raphael 이후 이름 공간이 변경되었다는 것입니다 (또는 이벤트가 JS 객체가 아닌 SVG에 바인딩되어있을 수 있습니다). 'Element.events'가 존재합니까? 그것은 배열입니까, 배열의 각 항목은 객체이고, 각 객체는 함수 인 키'f()'를 가지고 있습니까? 그렇다면 함수가 인수를 기대합니까? – user568458