我一直在碰到一个我正在做的游戏的碰撞代码的一些奇怪的问题,我已经能够追查到这一点:我的属性的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。只有看到如何设置值才有助于回答你的问题。 –