Javascript 使用RaphaelJS设置缩放动画

Javascript 使用RaphaelJS设置缩放动画,javascript,animation,raphael,Javascript,Animation,Raphael,我试图让缩放动画与拉斐尔的作品,但我没有运气。这就是我的代码的样子: 纸上动画({ 比例:2 }); 但是动画不起作用。这是使用RaphaelJS设置缩放效果动画的正确方法,还是必须手动设置动画(使用JavaScript间隔等…) --编辑-- 我错了,我指的是一个元素 elementFromPaper.animate({ 比例:2 }); Paper是拉斐尔的元素容器,它没有动画制作方法。 只有圆、矩形等元素。。具有动画制作方法。 如果要更改容器的大小,可以使用(但这不会缩放容器中的任何元素)

我试图让缩放动画与拉斐尔的作品,但我没有运气。这就是我的代码的样子:

纸上动画({ 比例:2 });

但是动画不起作用。这是使用RaphaelJS设置缩放效果动画的正确方法,还是必须手动设置动画(使用JavaScript间隔等…)

--编辑--


我错了,我指的是一个元素

elementFromPaper.animate({ 比例:2
});

Paper
是拉斐尔的元素容器,它没有
动画制作方法。
只有圆、矩形等元素。。具有
动画制作方法。
如果要更改容器的大小,可以使用(但这不会缩放容器中的任何元素)

编辑:如果要实现放大或缩小等效果,可以使用该方法

EDIT2:
scale
不在元素属性列表中,如中所列

要使用缩放设置动画,可以使用“常规”参数

ele.animate({transform: 's2'}) // here `s2` means a 2x scale

我为您编写了一个简单的演示:

纸张
是Raphael中元素的容器,它没有
动画
方法。
只有圆、矩形等元素。。具有
动画制作方法。
如果要更改容器的大小,可以使用(但这不会缩放容器中的任何元素)

编辑:如果要实现放大或缩小等效果,可以使用该方法

EDIT2:
scale
不在元素属性列表中,如中所列

要使用缩放设置动画,可以使用“常规”参数

ele.animate({transform: 's2'}) // here `s2` means a 2x scale

我为您编写了一个简单的演示:

与画布位置的唯一本机交互是通过该方法完成的,但是它不会设置转换到画布位置或缩放级别的动画。要实现动画,可以使用漂亮的javascript动画方法平滑过渡到所需的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);
}
var viewBoxX=0;
var-viewBoxY=0;
//@参数方向“向上”、“向下”、“向右”或“向左”
功能盘(方向){
var start=Date.now();
功能步骤(时间戳){
var progress=时间戳-开始;
var x=viewBoxX,
y=viewBoxY;
如果(方向==“向上”){
y=viewBoxY-进度*0.7;
}
否则如果(方向=‘向下’){
y=viewBoxY+进度*0.7;
}
否则如果(方向=‘右’){
x=viewBoxX+进度*0.7;
}
否则{
x=viewBoxX-进度*0.7;
}
//现在,我们将视图框设置为修改后的x和y坐标
//将100100替换为画布的大小
纸张.设置视箱(x,y,100,100);
如果(进度<400){
窗口帧(步骤);
}
否则{
viewBoxX=x;
viewBoxY=y;
}
}
窗口帧(步骤);
}

与画布位置的唯一本机交互是通过该方法完成的,但是它不会设置转换到画布位置或缩放级别的动画。要实现动画,可以使用漂亮的javascript动画方法平滑过渡到所需的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);
}
var viewBoxX=0;
var-viewBoxY=0;
//@参数方向“向上”、“向下”、“向右”或“向左”
功能盘(方向){
var start=Date.now();
功能步骤(时间戳){
var progress=时间戳-开始;
var x=viewBoxX,
y=viewBoxY;
如果(方向==“向上”){
y=viewBoxY-进度*0.7;
}
否则如果(方向=‘向下’){
y=viewBoxY+进度*0.7;
}
否则如果(方向=‘右’){
x=viewBoxX+进度*0.7;
}
否则{
x=viewBoxX-进度*0.7;
}
//现在,我们将视图框设置为修改后的x和y坐标
//将100100替换为画布的大小
纸张.设置视箱(x,y,100,100);
如果(进度<400){
窗口帧(步骤);
}
否则{
viewBoxX=x;
viewBoxY=y;
}
}
窗口帧(步骤);
}

我的错误,我指的是元素而不是纸画布。我的错误,我指的是元素而不是纸画布。