我正在尝试制作一个无限的动画循环。 div需要一直做出菱形运动。但它需要动画“这个”。
我已经尝试了一些通常可以在这样的场景中保存我的选项,但我无法让它工作。我将在下面发布我当前的试用版和一些较旧的试用版:
TypeError:self未定义
var shakeCounter = 0;
function loopShake(self) {
if (shakeCounter % 4 === 0)
self.animate({left: '+=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
else if (shakeCounter % 4 === 1)
self.animate({left: '-=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
else if (shakeCounter % 4 === 2)
self.animate({left: '-=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
else
self.animate({left: '+=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
shakeCounter++;
}(this);
loopShake();
下面有效,但是间隔中的动画总会给出意想不到的结果(对我而言)
var myTimer;
if (settings.shake) {
myTimer = setInterval(
(function(self) {
var shakeCounter = 0;
return function() {
if (shakeCounter % 4 === 0)
self.animate({left: '+=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed);
else if (shakeCounter % 4 === 1)
self.animate({left: '-=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed);
else if (shakeCounter % 4 === 2)
self.animate({left: '-=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed);
else
self.animate({left: '+=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed);
shakeCounter++;
}
})(this), 0);
}
此外,我尝试了function loopShake(this)
或var myElement = this; function loopShake(myElement)
等显而易见的事情,但这也让我无处可去。
希望你们能帮助我!