始终从给定坐标加载起点(DIV位置)

时间:2013-12-29 22:45:01

标签: javascript jquery coordinates

我正在尝试制作一个你必须在平台上移动球的游戏。在游戏开始时,球落在平台上然后你可以用箭头键移动它。这是工作,这里没有问题。

游戏开始于在my fiddle中可以看到一个落在黄色方块上的球(点击1开始)。该平台在javascript中构建如下(对于级别1和级别2):

var levels = [
    [
        [1,1,1,1,1],
        [1,1,1,1,1],
        [1,2,1,1,1]
    ],
    [
        [1,1,1,2,1],
        [1,1,1,1,1],
        [1,1,1,1,1]
    ]
];

其中1 =绿色瓷砖,0 =无瓷砖,2是黄色瓷砖。

为了让球落在黄色方块上,我有以下代码:

go: function() {
            ball.reset((1*100+50),(2*100+50));
            start();
        }

其中(1*100+50)是黄色磁贴的x坐标,(2*100+50)是y。更好的解释:1是右边的1个瓷砖*瓷砖长度+ 50(+50是在div的中间放下球)。一切都按预期工作。

但是,如果我加载2级(请参阅小提琴,单击2),我们会看到黄色方块已移动,但球仍然在固定位置掉落(请参阅go: function)。这就是我需要解决的问题。

我希望在加载关卡时加载这些黄色瓷砖坐标。在这种情况下,最简单的方法是在每个级别添加这些坐标。我想到了这样的事情:

var levels = [
    {
        yellowTile : [1, 2],
             tiles : [ [1,1,1,1,1],
                       [1,1,1,1,1],
                       [1,2,1,1,1] ]
    },
    {
        yellowTile : [3, 0],
             tiles : [ [1,1,1,2,1],
                       [1,1,1,1,1],
                       [1,1,1,1,1] ]
    }
];

所以go: function就像:

go: function() {
            ball.reset((yellowTileX*100+50),(yellowTileY*100+50));
            start();
        }

但我没有运气做这项工作。希望有人可以帮助我。

非常感谢

1 个答案:

答案 0 :(得分:1)

找到起始位置的最简单方法是在循环所有切片时保存它。我已经修改了你的脚本,因此通过在loadLevel中添加以下内容来保存起始位置:

    if(levels[level][i][j] === 2) {
        startPosition = {x: j, y: i};
    }

我已将函数getStartPosition()添加到平面类中,此函数可用于“go”函数以获取平面的起始x和y。这可用于将球重置为正确的x和y

    go: function() {
        ball.reset((plane.getStartPosition().x*100+50),(plane.getStartPosition().y*100+50));
        start();
    }

查看我修改后的版本:http://jsfiddle.net/BKEbL/7/