为什么我为position()的左值得到了疯狂的高值?

时间:2015-10-12 02:27:44

标签: javascript jquery html css game-physics

相关的代码是

    this.place = function ()
    {
        var headElem = game.snake.links[0];
        this.bub.css({
            left: headElem.pos.x * game.blockWidth + $('#snake-board-column').css('padding-left'),
            bottom: headElem.pos.y * game.blockWidth
        });
        console.log(this.bub.position()); // TEST
    }

并且它的目的是使相对于SVG rect元素的单词气泡位置(如果你想知道我为什么不简单地使用CSS,那是因为有很多交换/替换由于游戏逻辑而产生的元素)。在页面加载和窗口调整大小时调用上述函数。我发现奇怪的是我的测试结果

console.log(this.bub.position()); // TEST
当窗口调整大小时,

有时会为left生成非常高的值,因此屏幕上出现单词bubble。我只是调整了窗口大小并得到了

Objectleft: 308.5top: 0__proto__: Object
game.js:290 Objectleft: 23515top: 0__proto__: Object
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 23515}
game.js:290 Object {top: 0, left: 169169}
game.js:290 Object {top: 0, left: 169169}
game.js:290 Object {top: 0, left: 169169}

您可以在其中看到left的第一个值是308.5(正常,预期),后续值不合适。您可以在行动here和完整的JS here中看到它。什么导致这个废话????

最奇怪的是我测试了个别值

headElem.pos.xgame.blockWidth$('#snake-board-column').css('padding-left')这些看似正常。

1 个答案:

答案 0 :(得分:0)

您可能会连接字符串而不是添加整数。

headElem.pos.xgame.blockWidth$('#snake-board-column').css('padding-left')的类型是什么?

例如,我在控制台中尝试了这个:

var paddingLeft = $('#snake-board-column').css('padding-left');
>> typeof paddingLeft
>> 'string'

在对值进行求和之前尝试parseInt()