2013-01-16 97 views
1

这么慢,这是我生命的代码为什么.animate是在IE 8

function MoveTeleport(LeftRight,UpDown) { 
     var TileMoveLeft = new Number(-LeftRight); 
     var TileMoveUp = new Number(-UpDown); 
     this.MovetoLeft = TileMoveLeft * 70 + 'px'; 
     this.MovetoUp = TileMoveUp * 70 + 'px'; 

     this.Move = function() { 
      $('#Player').fadeTo(200,0.1); 

      $('#Map_Player').animate({ 
       'left': '+=' + this.MovetoLeft, 
       'top': '+=' + this.MovetoUp 
      }, 1000, function() { 
       LeftCurrent = $('#Map_Player').css('left', 10); 
       UpCurrent = $('#Map_Player').css('top', 10); 
       $('#Player').fadeTo(200, 1); 
      }); 
     } 
    } 

在Firefox,歌剧,铬动画那么好看。但在IE8中,它不工作,任何想法为什么??或如何解决它在IE 8?

+0

这是一个很难回答的问题,而不会看到你想要做什么动画。你可以发布更多的代码或创建一个jsfiddle吗? – boz

+0

对于移动项目我只是这样做 var Player1Teleport = new MoveTeleport($('#TxtLeft')。val(),$('#TxtUp')。val()); Player1Teleport.Move(); –

+0

看到这个 http://stackoverflow.com/questions/2164101/slow-jquery-animation-in-ie – Nandu

回答

5

jQuery的.animate和其他类似的方法每帧重新计算DOM元素的CSS,然后更新元素的style属性。每一帧,浏览器都需要重新计算网站布局并进行渲染。在某些情况下,动画可能需要昂贵的布局重新计算(取决于网站元素的布局,CSS等)。 IE8有一个相当老的渲染引擎,我会打赌你的情况下布局重新计算对它来说太昂贵了。除了摆脱.animate之外,没有办法解决这个问题。

昨天在article on Smashing Magazine中提到.animate表现的问题 - 这可能是一个有趣的事情阅读。