0

フラッシュ as3 に次のコードがありますが、swf にコンパイルし、ゲームオーバー画面からオプション ページに戻るボタンの 1 つをクリックすると、次のようなエラーが発生しました。

TypeError: Error #2007: Parameter child must be non-null.
    at flash.display::DisplayObjectContainer/removeChild()
    at FourSeasonsOfElements_v47_fla::MainTimeline/removeWinterScene()
    at FourSeasonsOfElements_v47_fla::MainTimeline/playAgain()

フレーム 3 (ゲームオーバー画面) のコードは次のとおりです。

playagainbutton.addEventListener(MouseEvent.CLICK, playAgain);
function playAgain(event:MouseEvent){
    gotoAndStop("options");
    removeWinterScene();
    removeAutumnScene();
    removeSummerScene();
    MovieClip(root).gameTime = 0;//reset time
}

1 から 7 タイムラインまでの長いキーフレームでのアクション:

function removeWinterScene(){
    MovieClip(root).removeChild(winterbg);
    MovieClip(root).removeChild(shadebg1);
    MovieClip(root).removeChild(winterHeading);
}

他のフレーム 7 の冬のゲーム シーン フレームには、タイムラインにコードがあります。

stop();
var winterbg:WinterScene = new WinterScene();
var shadebg1:fadeShade = new fadeShade();

var winterHeading:WinterSeasonTitle = new WinterSeasonTitle();
addChildAt(winterbg,0);//move the winter background in the background.
addChildAt(shadebg1,1);
addChildAt(winterHeading,1);

winterHeading.x = 200;

解決に関するご支援をいただければ幸いです。

4

1 に答える 1

0

Flash は、removeChild(null) を実行しようとしていると不平を言っています。これは、子が既に削除されているか、コードが失われたか、子への参照がなかったことを意味します。周囲のコードを詳しく調べないと正しい答えを知ることは困難ですが、調査に役立ついくつかの関連する質問を以下に示します。

削除しようとしているオブジェクトへの参照がありますか (変数は正しいオブジェクトを指していますか)? オブジェクトは既に削除/ガベージ コレクションされていますか (たとえば、ムービークリップが別のフレームに移動したため)? 変数はローカルですか?つまり、他のオブジェクト/関数からアクセスできないということですか?

于 2013-10-11T16:58:00.317 に答える