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