我想要縮放動畫與RaphaelJS一起工作,但我沒有運氣。這是我的代碼如下所示:動畫縮放與RaphaelJS
paper.animate({ 規模:2 });
但動畫不起作用。這是使用RaphaelJS動畫效果的正確方法,還是需要手動動畫的東西(使用JavaScript間隔等等)?
- 編輯 -
我的錯誤,我指的是一個元素。
elementFromPaper.animate({ scale:2 });
我想要縮放動畫與RaphaelJS一起工作,但我沒有運氣。這是我的代碼如下所示:動畫縮放與RaphaelJS
paper.animate({ 規模:2 });
但動畫不起作用。這是使用RaphaelJS動畫效果的正確方法,還是需要手動動畫的東西(使用JavaScript間隔等等)?
- 編輯 -
我的錯誤,我指的是一個元素。
elementFromPaper.animate({ scale:2 });
Paper
是拉斐爾元素的容器,它根本沒有animate
方法。
只有圓形,矩形等元素有animate
方法。
如果要更改容器的大小,可以使用setSize(但這不會縮放容器中的任何元素)。
編輯:如果你想達到像放大或縮小的效果,你可以使用setViewBox方法。
EDIT2:scale
不在元素的屬性,如here
上市要帶刻度動畫,您可以使用通用的transform參數列表。
ele.animate({transform: 's2'}) // here `s2` means a 2x scale
我寫了一個簡單的演示給你:http://jsfiddle.net/qiao/EhCyd/1/
與畫布工作崗位,唯一的原生交互是通過方法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);
}
我的錯誤,我指的是一個元素不是一紙畫布的示例代碼。 – matsko 2012-01-31 14:12:23
完美!非常感謝! – matsko 2012-02-05 17:21:50