2
드래그 가능한 SVG 요소를 velocity.js로 드래그하여 사용자가 드래그 할 때 애니메이션을 사용하고 있습니다. 그러나 velocity.js는 이전 mousemove 좌표를 &의 모든 mousemove 좌표를 통해 애니메이트합니다. 필자가 원하는 것은 velocity.js가 좌표를 대기열에 넣지 않고 함수가 전달한 최신 좌표로 애니메이션을 적용하는 것입니다.velocity.js를 사용하여 드래그 가능한 요소 애니메이트
는 확인이 jsFiddle
document.addEventListener("mousedown",mouseDown);
document.addEventListener("mouseup",endMove);
var click=false;
var clickX, clickY;
var moveX=0, moveY=0;
var lastMoveX=0, lastMoveY=0;
function mouseDown(evt){
evt.preventDefault();
var element=(typeof (window.event) !=='undefined') ? evt.srcElement:evt.target;
if(element.id==="mycirc")
{
click=true;
clickX = evt.clientX;
clickY = evt.clientY;
}
document.addEventListener("mousemove",moveboth);
return false;
}
function movexaxis(evt)
{
var clx=evt.clientX-clickX;
moveX = lastMoveX + clx;
return moveX;
}
function moveyaxis(evt)
{
var cly=evt.clientY-clickY;
moveY = lastMoveY + cly;
return moveY;
}
기능 moveboth (EVT) { 에서는 setTimeout (기능 이동() {
evt.preventDefault();
var a=document.getElementById("mycirc");
if(click){
movexaxis(evt);
moveyaxis(evt);
Velocity(a,{translateX: moveX},{duration:"0ms"}, {queue:false});
Velocity(a,{translateY: moveY },{duration:"0ms"},{queue:false});
Velocity(a,"stop");
}
},34);
}
function endMove(evt){
click=false;
lastMoveX = moveX;
lastMoveY = moveY;
}