2012-02-04 57 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對於所有那些解決自己的問題的開發者!我得到了這個,但是我讀了你的評論,所以答案是你的,我不會把它寫下來。