Flash AS3でステージマウスの座標を取得し、カーソルの下の16進グリッドでタイルを返す関数に取り組んでいます。カーソルがタイル上にない場合は関数が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またはundefinedをサポートしていませんか?このコードは、tileIndexが定義された後に0をトレースします。hexgridは正方形ではなく、ランダムに生成されるため、hitTestを使用しています。タイル0は最初のタイルであり、カーソルが16進マップから外れているときに0を返すと、問題が発生します。