Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将零添加到int变量会导致奇怪的数字_Javascript - Fatal编程技术网

Javascript 将零添加到int变量会导致奇怪的数字

Javascript 将零添加到int变量会导致奇怪的数字,javascript,Javascript,我对Javascript中的简单加载项有一个问题 看看这个firebug输出: 我正在做的是画布上的2D平铺贴图,对于贴图中尺寸大于一个平铺的对象,它们的宽度和高度设置为负数,以告诉我它们在x/y方向上偏移了多少个平铺,以获得具有相关数据的平铺 这适用于所有情况,除非将零添加到数字中。这导致了奇怪的数字 在上图中,触发了两个单击事件,每个事件以“单击X X Y”开始,以“将X/Y修改为X Y”结束。如您所见,单击Y偏移量为-3的平铺效果良好,但单击Y偏移量为0的平铺结果为247!???我已经一

我对Javascript中的简单加载项有一个问题

看看这个firebug输出:

我正在做的是画布上的2D平铺贴图,对于贴图中尺寸大于一个平铺的对象,它们的宽度和高度设置为负数,以告诉我它们在x/y方向上偏移了多少个平铺,以获得具有相关数据的平铺

这适用于所有情况,除非将零添加到数字中。这导致了奇怪的数字

在上图中,触发了两个单击事件,每个事件以“单击X X Y”开始,以“将X/Y修改为X Y”结束。如您所见,单击Y偏移量为-3的平铺效果良好,但单击Y偏移量为0的平铺结果为247!???我已经一遍又一遍地讨论这个问题,没有找到答案。所有数据似乎都很好,直到我尝试将0添加到变量y时为止。如果这还不够奇怪的话,那么将零添加到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);
}

if(城市地图[x][y]['typeID']+1对于所有解决自己问题的开发人员!我得到了这个,但我读了你的评论,所以答案是你的,我不会写下来。

有可能y在其他地方被修改了吗?在
+=
指令之前添加一条调试消息来打印y的值,以确保…在这里似乎很有效:很好不太可能Javascript在这里做错了什么。您是否尝试过在Firebug中单步执行函数并查看涉及的变量?可能此变量存储为字符串?您是否可以尝试将变量“强制转换”为整数,“247”看起来像2^8-10(我不知道-10来自何处,但可能来自X?…其JS:))所以试着乘以1:y=y*1+…,或者使用parseint函数。。问题是这两行:x+=parseInt(cityMap[x][y][width'],10);y+=parseInt(城市地图[x][y][height'],10);调用第二行时,第一行将x修改为不同的值,导致第二行从不同的数组元素读取。哦!是时候用谷歌搜索一张50英尺高的脸谱图了。。。(不得不在回复中回答,因为显然新手不能在发帖后8小时内回答自己的问题。这是一个多么奇怪的规则啊)