0

私は何時間も試してみましたが、問題の解決策をコーディングして検索しても効果がありませんでした。

エラー: TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

ブリーフィング: 私はゲームを作成しており、ランダムな間隔でバックグラウンド クラウド スポナーに取り組んでいます。アイデアの 1 つは、彼女のライフ スパンが 0 (100 から 0 までのカウントダウン) に達した後、クラウドをフェードアウトさせることです。プロジェクトは 30 FPS です。興味深いことに、エラーの原因となった雲は消えますが (おそらくまだ存在しますが、アルファは 0 ですか?)、次の雲はエラーを出さず、すべて正常に動作します。

それでは、コードと説明の時間です。

ゲーム クラス- ドキュメント クラス

// VARIABLES
    var clouds:Clouds = new Clouds(); 
    static var cloudsTimerDelay:Number = 3000;
    static var cloudsTimer:Timer = new Timer(cloudsTimerDelay);

// CONSTRUCTOR
    cloudsTimer.addEventListener("timer", spawnCloud);
    cloudsTimer.start();

// CALLED FUNCTION
    function spawnCloud(e:Event){
        stage.addChildAt(new Clouds,1);
    }

クラウドクラス

// VARIABLES
    var fadeSpeed:Number = 0.05;
    var lifeSpan:Number = 100;

// CONSTRUCTOR
    addEventListener("enterFrame", enterFrame);

// CALLED FUNCTIONS
    function enterFrame(e:Event)
    {
        this.lifeSpan--;
        this.x +=  this.velocity;

        if (this.lifeSpan < 0)
        {
            this.alpha -=  this.fadeSpeed;
            if (this.alpha <= 0)
            {
                kill(); // ERROR IN THIS FUNCTION
            }
        }

    }


    function kill()
    {
        removeEventListener("enterFrame", enterFrame);
        stage.removeChild(this); // ERROR ERROR ERROR
    }

すぐ上のエラーの場所をマークしました。問題を引き起こしているのは stage.removeChild(this) です (デバッガーが言うことです)。このコードの主なアイデアは、設定された間隔 (タイマー セクション) でステージ上にオブジェクトを作成することです。オブジェクトが作成されると、オブジェクトは独自の enterFrame 関数で開始されます。雲を移動するために使用され、各フレームのライフスパンから 1 を引きます。0 に達すると、アルファ値を定数値で変更してフェードが開始されます。アルファが 0 よりも低い場合、kill 関数が入り、eventlistener を取り除きます。ステージからクラウドを削除します。このエラーが発生する理由はありますか? どんな解決策にもとても感謝しています!また、私の書き方が悪かったら大変申し訳ありませんが、これが Stack での最初の投稿です :)

乾杯!

4

1 に答える 1