0

クラスに配列を返す関数があります。使用するとスタックオーバーフローエラーが発生します。重要な機能は次のとおりです。

ScrollList / returnArmy

    public function returnArmy ( army:int ):Array
    {
        var returnVar:Array;

        if( army == 0 ) returnVar = army1_;
        else if( army == 1 ) returnVar = army2_;
        else if( army == 2 ) returnVar = army3_;
        else if( army == 3 ) returnVar = army4_;
        else if( army == 4 ) returnVar = army5_;
        else if( army == 5 ) returnVar = army6_;
        else if( army == 6 ) returnVar = army7_;
        else if( army == 7 ) returnVar = army8_;
        else returnVar = new Array;

        return returnVar;
    }

SkirmishScreen / returnArmy

    public function returnArmy ( army_:int ):Array
    {
        var retArmy:Array = returnArmy( army_ );
        return retArmy;
    }

SkirmishScreen / returnArmyは、ループで呼び出されます。

    screensAR_[3] = new PlayScreen( stage, screensAR_[2].returnArmy( 0 ) );

新しいArray()で初期化されたarmy1_から8_を使用します。誰でも助けることができますか?

編集:正確なエラーは次のとおりです。

エラー:エラー#1023:スタックオーバーフローが発生しました。SkirmishScreen / returnArmy()で

4

1 に答える 1

2

私はactionscriptに精通していませんが、「SkirmishScreen」returnArmy関数がそれ自体を再帰的に呼び出しており、それから抜け出すことはないようです。これは、他の言語でのスタックオーバーフロー例外の一般的な原因です。

再帰を使用しているようには見えません。「SkirmishScreen」returnArmy関数で「ScrollList」returnArmy関数を呼び出す必要があると思いますが、代わりに「SkirmishScreen」returnArmyがそれ自体を呼び出しています。それが再帰です。

于 2012-06-08T17:42:03.900 に答える