Javascript 如何提高我对Raphaë;lJS图像动画?

Javascript 如何提高我对Raphaë;lJS图像动画?,javascript,performance,web,raphael,Javascript,Performance,Web,Raphael,我用RaphaëlJS永远旋转图像。您可以看到当前的结果。但是,在多次调整浏览器窗口的大小后,我遇到了一些性能问题 是否每次调整窗口大小时都会创建新动画,而旧动画不会被删除?如果是这样的话,我该如何停止并移除它们?如果不是这样的话,你知道我该如何提高绩效吗 代码如下: <!DOCTYPE HTML> <html> <head> <style> body { background-color: black;

我用RaphaëlJS永远旋转图像。您可以看到当前的结果。但是,在多次调整浏览器窗口的大小后,我遇到了一些性能问题

是否每次调整窗口大小时都会创建新动画,而旧动画不会被删除?如果是这样的话,我该如何停止并移除它们?如果不是这样的话,你知道我该如何提高绩效吗

代码如下:

<!DOCTYPE HTML>
<html>
  <head>
    <style>
      body {
        background-color: black;
        width: 100%;
        height: 100%;
        margin: 0px;
        padding: 0px;
    }     
    </style>  
    <script type="text/javascript" src="raphael.js"></script>
  </head>
  <body>
    <canvas id="canvas"></canvas>
    <script>
        var canvas = document.getElementById('canvas'); 
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        var gearImageSrc = "images/gear.png";
        var nikaImageSrc = "images/nika_half.png";
        var logoImageSrc = "images/logo_mp.png";

        var paper;
        var gearImage = new Image();
        var nikaImage = new Image();
        var logoImage = new Image();
        gearImage.src = gearImageSrc;
        nikaImage.src = nikaImageSrc;
        logoImage.src = logoImageSrc;

        showAll = function () {         
            paper = Raphael(0, 0, canvas.width,canvas.height);
            gear = paper.image(gearImageSrc, canvas.width/2 - gearImage.width/4, canvas.height/2 - gearImage.height/3, gearImage.width/2, gearImage.height/2);
            nika = paper.image(nikaImageSrc, canvas.width/2 - nikaImage.width/4, canvas.height/2 - nikaImage.height/3, nikaImage.width/2, nikaImage.height/2);
            logo = paper.image(logoImageSrc, canvas.width/2 - logoImage.width/4, canvas.height/2 + gearImage.height/6, logoImage.width/1.5, logoImage.height/1.5);          
            var spin = Raphael.animation({transform: "r-360"}, 10000).repeat(Infinity);
            gear.animate(spin);
        }       

        function resizeCanvas() {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;

            paper.remove();
            showAll();
        }

        window.addEventListener('resize', resizeCanvas, false);

        window.onload = function () {
            showAll();
        }

    </script>
  </body>
</html>

身体{
背景色:黑色;
宽度:100%;
身高:100%;
边际:0px;
填充:0px;
}     
var canvas=document.getElementById('canvas');
canvas.width=window.innerWidth;
canvas.height=window.innerHeight;
var gearImageSrc=“images/gear.png”;
var nikaImageSrc=“images/nika_half.png”;
var logoImageSrc=“images/logo\u mp.png”;
var纸;
var gearImage=新图像();
var nikaImage=新图像();
var logoImage=新图像();
gearImage.src=gearImageSrc;
nikaImage.src=nikaImageSrc;
logoImage.src=logoImageSrc;
showAll=函数(){
纸张=拉斐尔(0,0,canvas.width,canvas.height);
gear=paper.image(gearImageSrc,canvas.width/2-gearImage.width/4,canvas.height/2-gearImage.height/3,gearImage.width/2,gearImage.height/2);
nika=paper.image(nikaImageSrc,canvas.width/2-nikaImage.width/4,canvas.height/2-nikaImage.height/3,nikaImage.width/2,nikaImage.height/2);
logo=paper.image(logoImageSrc,canvas.width/2-logoImage.width/4,canvas.height/2+gearImage.height/6,logoImage.width/1.5,logoImage.height/1.5);
var spin=Raphael.animation({transform:“r-360”},10000)。重复(无限);
齿轮。动画(旋转);
}       
函数resizeCanvas(){
canvas.width=window.innerWidth;
canvas.height=window.innerHeight;
纸张。移除();
showAll();
}
addEventListener('resize',resizeCanvas,false);
window.onload=函数(){
showAll();
}

我可能有一个解决方案,请告诉我这是否有效:

var spin = Raphael.animation({transform: "...r-360"}, 10000).repeat(Infinity);

每当您想附加到变换中时,都必须在变换()中添加
,这似乎是通过重新调整窗口大小来实现的

我刚查过网站。它似乎没有做你说的奇怪的事情。可能会将10000更改为15000以获得更高的流动性您是否尝试过多次调整大小?更改时间值会使齿轮旋转缓慢,这不是我想要的。我建议您使用greensock的TweenMax JS制作任何动画,这样做不会减慢速度。哦,我明白了,您可以创建JSFIDLE吗?因为如果不使用代码,很难说出什么是错误的。只需制作一个类似的演示