如何重新启动动画中的循环?

时间:2012-03-27 01:49:14

标签: javascript jquery loops collision-detection

我正在尝试建造一个类似太空入侵者的游戏(因为我只在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 );
        });
}
}

我在僵尸向下移动中包含了这个测试

// 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 :(得分:0)

您需要注意关闭功能的方式。看一下这个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);
            });
        }
    });
}

请注意,最后还有一堆额外的括号。