Единственное встроенное взаимодействие с положением холста осуществляется с помощью метода setViewBox , однако оно не анимирует переход к положению холста или уровню масштабирования.Чтобы добиться анимации, вы можете использовать изящный метод анимации javascript window.requestAnimationFrame , чтобы плавно перейти к желаемому состоянию viewBox.
Прежде всего, инициализируйте метод для всех браузеров:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
Вот пример кода для анимации панорамирования
var viewBoxX = 0;
var viewBoxY = 0;
//@param direction 'up', 'down', 'right' or 'left'
function pan(direction) {
var start = Date.now();
function step(timestamp) {
var progress = timestamp - start;
var x = viewBoxX,
y = viewBoxY;
if(direction == 'up') {
y = viewBoxY - progress * 0.7;
}
else if (direction == 'down') {
y = viewBoxY + progress * 0.7;
}
else if(direction == 'right') {
x = viewBoxX + progress * 0.7;
}
else {
x = viewBoxX - progress * 0.7;
}
//Now we set the view box at the modified x and y coordinates
//Replace 100,100 with the size of your canvas
paper.setViewBox(x, y, 100, 100);
if (progress < 400) {
window.requestAnimFrame(step);
}
else {
viewBoxX = x;
viewBoxY = y;
}
}
window.requestAnimFrame(step);
}