3
我在JavaScript中应该是简单的additon时遇到问题。将零添加到int变量会导致奇怪的数字
看看这个萤火输出:
我正在做一个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做到这一点?
y有可能在其他地方被修改过吗?添加一条调试消息来在'+ ='指令之前打印y的值,以确保... – Baldrick 2012-02-04 18:56:58
似乎在这里工作:http://jsfiddle.net/N2WQr/ – Jivings 2012-02-04 19:08:46
这是很不可能的Javascript在这里做错了。你有没有尝试单步执行Firebug中的函数并观察变量? – 2012-02-04 19:34:06