我一直在碰到一個我正在做的遊戲的碰撞代碼的一些奇怪的問題,我已經能夠追查到這一點:我的屬性的getters返回NaN,而不是一個實際的數字。吸氣劑返回NaN
這裏有屬性的聲明,在類的頂部:
private var _top:Number;
private var _bottom:Number;
private var _left:Number;
private var _right:Number;
,這裏是在干將:通過調用的公共函數setSides(tileSize:Number)
成爲產生
public function get top():Number
{
return _top;
}
public function get bottom():Number
{
return _bottom;
}
public function get left():Number
{
return _left;
}
public function get right():Number
{
return _right;
}
值一個類實例(值取決於tileSize
參數)。運行完後,我運行一個trace來獲取使用getters的值,但是它們都返回NaN。
問題是,如果我在setSides()
範圍內運行類似的跟蹤,而不使用getters(即直接使用變量),它們會返回正確的值。 爲了確定,我也在使用獲取者的函數中做了它,所以我確定它們是問題所在。
任何人都知道發生了什麼事?
編輯:這是我的setSides()
功能:
public function setSides(tileSize:Number):void
{
var _top:Number = Math.floor(_yPos/tileSize);
var _bottom:Number = Math.floor((_yPos + 45)/tileSize);
var _left:Number = Math.floor(_xPos/tileSize);
var _right:Number = Math.floor((_xPos + 20)/tileSize);
trace("top: " + top + " bottom: " + top + " left: " + left + " right: " + right); //This gives the correct values, not NaN
}
但即使有什麼問題我的價值觀,我分配(這將顯示在我的跟蹤),我分配的值爲0給我的構造函數中的每個變量,所以他們不應該在我的類實例化的那一刻給NaN。
編輯:哦,男人,我現在才注意到這一點。由於我做了一些測試和重新編輯,我仍然在使用我的變量,就好像我正在定義它們一樣(使用var
和:Number
)。此外,「給他們分配0」也在我提到的這個測試和重新編輯之前,所以不存在。
這些吸氣劑看起來不錯。請在不使用getter的情況下發布'setSides'的代碼和獲取正確值的地方。可能是價值觀在其他地方發生了變化。 – taskinoor
默認情況下,它們是NaN。只有看到如何設置值纔有助於回答你的問題。 –