0

関数でエラー #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);
        }
    }
4

1 に答える 1

0

エラー #1010 は、値やメソッドなどの用語が定義されていない場合にスローされます。.typ2 次元の 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に従って計算されることに注意してください。これがあなたの意図したものかどうかはわかりませんが、指摘したかったのです。point.x - (mag / 32)

于 2013-06-17T09:22:08.680 に答える