Как можно перезапустить цикл в анимации? - PullRequest
2 голосов
/ 27 марта 2012

Я пытаюсь создать игру наподобие космического захватчика (поскольку я только начал кодировать 5 дней назад), где, если ботинок попадет в зомби, зомби исчезнет и снова появится в верхней части экрана (снова спускаясь).Я просто не могу заставить зомби вернуться наверх (они остаются в самой нижней точке анимации)

Ниже приведен тест на столкновение:

function zombietestCollision(position1, size1, position2, size2) {
if (((position1.left + size1.width)  > position2.left) &&
    ((position1.top  + size1.height) > position2.top)  &&
    ((position2.left + size2.width)  > position1.left) &&
    ((position2.top  + size2.height) > position1.top)) {

        function loop () {
            movedown($zombie);
            moveup($zombie);
        };
        $(function zombieloop() {
            setInterval( loop, 1 );
        });
}
}

IЯ включил этот тест в мое нисходящее движение зомби

// down movement of the zombies
function movedown($zombie) {      
$zombie.animate({
    'left': 300,
}, {
        duration:5000,
        step:function(){

            $.each($("#zombie"), function(index,zombie) {

                var $zombie = $(zombie);
                var $shoe = $("#shoe");

                var shoeSize = {
                    height: $shoe.height(),
                    width : $shoe.width()
                };

                var zombieSize = {
                    height: $zombie.height(),
                    width : $zombie.width()
                };

                zombietestCollision($shoe.position(), shoeSize, $zombie.position(), zombieSize);


            });
}

Когда я запускаю это, экран просто пустой.Что я сделал правильно?Если нужно, вот полный код: http://jsfiddle.net/JKd9K/7/

Извините, но я совершенно новичок в программировании, поэтому мне сложно понять, какую часть я сделал неправильно.Ура!

1 Ответ

0 голосов
/ 27 марта 2012

Вы должны быть осторожны с тем, как вы закрываете функции.Взгляните на это http://jsfiddle.net/JKd9K/2/

Ваша функция перемещения должна быть такой:

function movedown($zombie) {
    $zombie.animate({
        'left': 300
    }, {
        duration: 5000,
        step: function() {
            $.each($("#zombie"), function(index, zombie) {
                var $zombie = $(zombie);
                var $shoe = $("#shoe");
                var shoeSize = {
                    height: $shoe.height(),
                    width: $shoe.width()
                };
                var zombieSize = {
                    height: $zombie.height(),
                    width: $zombie.width()
                };
                zombietestCollision(
                    $shoe.position(),
                    shoeSize,
                    $zombie.position(),
                    zombieSize);
            });
        }
    });
}

Обратите внимание, что в конце есть куча дополнительных скобок.

...