Flash AS3:在使用Integer Datatypes时,如何返回NAN或未定义?
-
24-10-2019 - |
题
我正在研究一个函数,该函数将阶段鼠标坐标在Flash AS3中,并在光标下方的十六进制中返回瓷砖。如果光标不在瓷砖上,并且如果是,则希望函数返回NAN或不确定的功能,如果是光标,则该功能是对象数组中该图块的整数索引。
public function getCursorTile(mX:Number,mY:Number):uint
{
var tileIndex:uint = new uint(NaN);
trace(tileIndex);
for (i=0; i<tileArray.length; i++)
{
if (tileArray[i].hitTestPoint(mX,mY,true))
{
tileArray[i].tileBorder.gotoAndStop(1);
tileIndex = i;
}
}
return tileIndex;
}
我一直在用于大多数整数变量中使用UINT,也许此数据类型不支持NAN或未定义?定义了瓷砖后,此代码跟踪0。我之所以使用Hittest,是因为六边形不是正方形的,并且是随机生成的。瓷砖0是第一个瓷砖,当光标脱离十六进制时,返回0将引起问题。
解决方案
NAN是类型号。您无法将其有意义地投入到UINT中。
如果您真的必须返回NAN,请更改功能签名以返回 :Number
, ,但是请理解,如果该功能在您的关键道路上,您可能会稍微罚款。
可以在这里使用一些C风格的欺骗性:如果有意义的瓷砖索引总是积极的,并且您会感到最终不会有超过20亿英尺,那么您可以回报-1表示“不是瓷砖”。你需要改变 :uint
进入 :int
, ,并且要谨慎对待整个代码之间的两种类型之间的隐式转换。
其他提示
另一种方法是使用UINT状态的MAX_VALUE。实际上,您将永远不会达到价值,但您可以对其进行检查。
防止许多代码重构 return uint.MAX_VALUE
并检查它 if(value == uint.MAX_VALUE)
. 。如果在肠循环中,您可以尝试将UINT.MAX_VALUE保存在const中,以便您在UINT类内的变量查找的开销。
不隶属于 StackOverflow