AS3功能错误#1010

时间:2013-06-17 05:48:48

标签: actionscript-3 flash

我在函数中遇到错误#1010,我想知道错误的具体位置是什么?谢谢!

public function getSide(point:Point,mag:Number):int
    {
        if (level.map[int(point.x - mag / 32)][int(point.y / 32)].typ != 2)
        {
            return 0;
        }
        else if (level.map[int(point.x / 32)][int(point.y+mag / 32)].typ!=2)
        {
            return 1;
        }
        else if (level.map[int(point.x+mag / 32)][int(point.y / 32)].typ!=2)
        {
            return 2;
        }
        else if (level.map[int(point.x / 32)][int(point.y-mag / 32)].typ!=2)
        {
            return 3;
        }else{
            return getSide(point,mag+1);
        }
    }

1 个答案:

答案 0 :(得分:0)

错误#1010在未定义术语时抛出,例如值或方法。我将猜测并说这是导致错误的.typ调用,因为您正在从二维level.map数组中检索无类型对象。

对于每个if-else,在调用.typ之前尝试转换对象检索。例如,替换为:

level.map[int(point.x - mag / 32)][int(point.y / 32)].typ != 2

有了这个:

(level.map[int(point.x - mag / 32)][int(point.y / 32)] as MyClass).typ != 2

显然将MyClass替换为您要投射到的类的名称。

另请注意,请注意point.x - mag / 32将根据标准Order of Operations计算为point.x - (mag / 32)。我不确定这是不是你想要的,但想指出它。