1

私はフラッシュゲームに取り組んでいて、それをほぼ完成させていますが、問題が発生しています。ゲームが終了するか、ユーザーが「ゲームの終了」ボタンを押すと、メインメニューに戻りたいと思います。ゲームは 3 フレーム目にメイン メニューが表示され、4 フレーム目にゲームが実行されるように設定されています。ゲームコードはすべてそこにあります。

私が試したいくつかのこと: 単純に 3 番目のフレームに戻ろうとしました。これにより、次のエラーが発生します。

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Hundred_fla::MainTimeline/GotoEndGame()[Hundred_fla.MainTimeline::frame5:66]

すべてのゲーム変数をデフォルト値に戻し、すべての子を削除しようとしました...など...まったく同じエラーが発生します...問題が何であるかわかりません。解決策の 1 つはムービーをリロードすることだと思っていましたが、これは Android/IOS で実行され、Web ページを更新できません。...どんな助けでも大歓迎です。ありがとう

編集: 66 行目のコードは次のとおりです。

while(stage.numChildren > 0){
    stage.removeChildAt(stage.numChildren-1);
}
4

2 に答える 2

2

オブジェクトのパージを試みる前に、ステージ リンクをロックする必要があります。コードを実行するインスタンスを削除しているように見えるため、ステージ参照が失われます。

var theStage:Stage=stage;
while(theStage.numChildren > 0){
    theStage.removeChildAt(0); 
    //you can always be sure that element at [0] exists, rather than going for [numChildren-1]
}
于 2012-11-22T05:09:30.577 に答える
1

5番目のフレームの66行目に応じて、いくつかの可能性があります。

  • Flash Player 9をターゲットにしているため、表示オブジェクトはgotoAndStop呼び出しとは非同期に読み込まれるため、参照がnullになります。解決策は、Flash Player 10または11をターゲットにすることです(公開設定[Ctrl + Shift + F12]で変更します)。本当にFlashPlayer9をターゲットにする必要がある場合は、属性にアクセスできるようにするための複雑な方法があります

  • 5番目のフレームからオブジェクトを参照している後gotoAndStop、これはもう使用できないため、nullオブジェクト参照エラーがスローされます

  • これはロジックのエラーであり、それを見つけるためにコードの一部を確認する必要があります

gotoAndStop疑わしい場合は、メソッドの最後の呼び出しとして呼び出しを残すのが常に最善です。

編集:

コードを見た後、それstage自体がnullであるように見えるため、エラーがスローされます。目に見える違いがない場合は、コードをtry/catchで囲むことができます。

try {
    while(stage.numChildren){
        stage.removeChildAt(0);
    }
} catch (error:Error) {
}

また、イベントにアクセスする前に、ADDED_TO_STAGEイベントを聞いて、への有効な参照があることを確認してください。stage

于 2012-11-22T04:37:12.460 に答える