2012-02-04 93 views
3

我在JavaScript中应该是简单的additon时遇到问题。将零添加到int变量会导致奇怪的数字

看看这个萤火输出:

Firebug output screenie

我正在做一个2D地图平铺在画布上,并在地图对于规模大于一瓦的对象,他们将它们的宽度和高度设置为负数,告诉我有多少瓦片在x/y上偏移了与相关数据的瓦片。

这适用于所有情况,除了向数字中加零时外。这导致奇怪的数字。

在上图中,有两个点击事件触发,每个事件都以“点击X×Y”开始,以“修改X/Y到X Y”结束。正如你所看到的,点击Y偏移-3的贴图可以正常工作,但是如果点击Y偏移量为0的贴图,结果为247!我一直在反复思考,没有接近答案。所有的数据看起来都很好,直到我尝试向变量y添加0为止。如果这并不奇怪,那么向x变量加零就可以了!

下面是输出调试消息并导致错误的代码片段。 x和y是函数调用的参数,cityMap是全局3D数组。

if (cityMap[x][y]['typeID']<0) 
{ 
    // get deffered tile pos 
    console.debug("Offset x = "+cityMap[x][y]['width']); 
    console.debug("Offset y = "+cityMap[x][y]['height']); 
    x += parseInt(cityMap[x][y]['width'], 10); 
    y += parseInt(cityMap[x][y]['height'], 10); 
    console.debug("modified x/y into x:"+x+" y:"+y); 
} 

我完全失去了这里的想法。有谁知道还有什么我可以尝试阻止Javascript做到这一点?

+1

y有可能在其他地方被修改过吗?添加一条调试消息来在'+ ='指令之前打印y的值,以确保... – Baldrick 2012-02-04 18:56:58

+0

似乎在这里工作:http://jsfiddle.net/N2WQr/ – Jivings 2012-02-04 19:08:46

+1

这是很不可能的Javascript在这里做错了。你有没有尝试单步执行Firebug中的函数并观察变量? – 2012-02-04 19:34:06

回答

0

+1对于所有那些解决自己的问题的开发者!我得到了这个,但是我读了你的评论,所以答案是你的,我不会把它写下来。