如何检查AS3 2D阵列中的匹配对象?

时间:2013-03-25 02:57:09

标签: arrays actionscript-3 actionscript

我正在使用一个Actionscript 3“faux”2D数组来存储游戏中的图块,我想让我的玩家只能移动到有效的图块。数组像“array [x] [y]”一样构建,我知道了数组值和玩家移动值。我知道indexOf适用于常规数组,但我怎样才能检查2D数组呢?

2 个答案:

答案 0 :(得分:0)

如果您的数组实例是myArray,则可以使用for循环,如下所示:

private function search(element:Object):Point
{
    for (var columIndex:int = 0; columIndex < myArray.length; i++)
    {
        var rowIndex:int = myArray[columIndex].indexOf(element);
        if (rowIndex != -1)
        {
            return new Point(columIndex, rowIndex);
        }
    }
    return null;
}

Point类会是这样的:

package
{
    public class Point
    {
        public var x:int;
        public var y:int;

        public function Point(x:int, y:int)
        {
            this.x = x;
            this.y = y;
        }
    }
}

答案 1 :(得分:0)

为了在2D数组上运行indexOf(),您应该遍历嵌套数组,返回2D坐标(使用flash.geom.Point或者为此定制的任何其他类)。但是如果你通过在阵列中查询该位置来检查玩家是否移动到有效位置并检查其有效性,你会做得更好。

function isValid(player:Player,playerWantsToMoveTo:Point):Boolean {...}