2013-01-16 84 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表現的問題 - 這可能是一個有趣的事情閱讀。