2013-07-18 103 views
0

我有這樣的jsfiddle:http://jsfiddle.net/2mRMr/3/jQuery的.animate不工作

這個代碼不工作:

setInterval(function() { 
     box.animate({ 
      left: function (i, v) { return newv(v, 37, 39); }, 
      top: function (i, v) { return newv(v, 38, 40); } 
     }); 

    }, 20); 

而做這:

setInterval(function() { 
     box.css({ 
      left: function (i, v) { return newv(v, 37, 39); }, 
      top: function (i, v) { return newv(v, 38, 40); } 
     }); 

    }, 20); 

任何幫助嗎?

+0

什麼是盒子? :) – vitozev

+2

它不這樣工作!你不能在每次迭代調用一個函數的時間間隔內用動畫替換css來返回css值等等。它只是沒有意義。 – adeneo

+0

請參閱我的jsfiddle框是小紅色的矩形 – Sora

回答

0

as adeneo said - 使用setInterval您創建自己的動畫,因此您不需要jQuery animate()裏面。 animate()也可能使用setInterval來製作動畫。您修改lefttop使用setIntervalnewv()和animate()嘗試修改lefttop使用自己的setInterval在同一時間。

btw:在animate()中,您可以使用step()來修改每一步的值(沒有自己的setInterval),但我從來沒有使用它。

+0

嗯罰款我明白了,但我想知道如果他們是一些代碼工作,我應該用它來改變方塊運動的方式,使其更平滑? – Sora

+0

在自己的函數中使用'setInterval'可以更好地控制,並且您的動畫可以與鍵盤進行交互。用'animate()'你不能這樣做。在某些情況下,你不能做到這一點更平滑 - 你不能移動半像素;) – furas

+0

如果你打算創建遊戲,請參閱[HTML5遊戲引擎](http://html5gameengine.com) – furas