将此传递给recurive jquery动画功能

时间:2015-06-11 05:33:03

标签: javascript jquery animation recursion

我正在尝试制作一个无限的动画循环。 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)等显而易见的事情,但这也让我无处可去。

希望你们能帮助我!

0 个答案:

没有答案