0
package  
{
    import flash.display.*;

    public class documentclass extends MovieClip
    {
        public var playscreen:avoiderclass;

        public function documentclass() 
        {
            playscreen.addEventListener(playerEvent.DEAD, onplayerdeath);
            playscreen.x = 0;
            playscreen.y = 0;
            playscreen = new avoiderclass();
            addChild(playscreen);
        }
        public function onplayerdeath(PlayerEvent:playerEvent):void
        {
            var Gameover:gameover = new gameover();
            Gameover.x = 0;
            Gameover.y = 0;
            addChild(Gameover);

            playscreen = null;
        }
    }

}

わかりました、ステージ(このクラス)がプレイヤーと敵のムービークリップを引き込むクラスであるときに機能しました。次に、ステージ用にこれを追加し、プレイスクリーン用にもう1つ作成しました...なぜ機能しないのかわかりませんが、エラーがポップアップしない理由について誰かが私に可能性を教えてくれませんか...

4

1 に答える 1

0

次のように、変数 playscreen を新しい avoiderclass オブジェクトに設定する必要があります。

        playscreen = new avoiderclass();

する前に..

        playscreen.addEventListener(playerEvent.DEAD, onplayerdeath);
        playscreen.x = 0;
        playscreen.y = 0;

この方法をお試しください。

public class documentclass extends MovieClip {
    public var playscreen:avoiderclass;

    public function documentclass(){
        // construct the object first
        playscreen = new avoiderclass();
        // then manipulate it.
        playscreen.addEventListener(playerEvent.DEAD, onplayerdeath);
        playscreen.x = 0;
        playscreen.y = 0;
        addChild(playscreen);
    }

そして、ここでその関数では、プレイスクリーンをディスプレイリストから削除することを忘れないでください

    public function onplayerdeath(PlayerEvent:playerEvent):void {
        var Gameover:gameover = new gameover();
        Gameover.x = 0;
        Gameover.y = 0;
        addChild(Gameover);
        // first remove the playscreen from display list
        removeChild(playscreen);
        // then set it to null, now really unreachable and eligible for gc
        playscreen = null;
    }
  }
}
于 2013-04-05T21:42:51.467 に答える