我有一个动态生成的 svg 图像,我正在使用 Ariutta 的 svg-pan-zoom 插件。当我双击一个 svg 图像时,我将 pan.x = centerOfScreenX 和 pan.y = centerOfScreenY 设置为将图像置于屏幕中间。IE:
$('.svg').dblclick(function(){
zoom.pan({'x':centerOfScreenX, 'y':centerOfScreenY });
});
目前这会导致图像突然移动到屏幕中心。有没有一种方法可以为平移位置的这种变化设置动画,以便双击的图像沿着一条路径移动到屏幕中心?
Bumbu 提出了两种解决方案(见下面的答案),我首先尝试了。但是我的尝试没有奏效,我不知道为什么。
// centerOfScreenX and centerOfScreenY are the correct values that pan.x and
// pan.y should have to center the svg in the middle of the screen
// xInterval and yInterval break the distance between the current pan
// position and the desired pan position into 10 steps
var xInterval = (centerOfScreenX - pan.x)/10;
var yInterval = (centerOfScreenY - pan.y)/10;
while( pan.x !== centerOfScreenX && pan.y !== centerOfScreenY ){
if(pan.x !== centerOfScreenX){
pan({'x': pan.x + xInterval })
}
if(pan.y !== centerofScreenY){
pan({'y': pan.y + yInterval })
}
}
当我尝试运行此代码时,窗口冻结并且我无法再与我的应用程序交互,除非我关闭窗口并重新加载它。我的猜测是我以某种方式触发了无限循环。