У меня есть функция, которая должна перезапустить всю мою игру, но когда она возвращается, она ломается.Как это исправить в функции перезагрузки? - PullRequest
0 голосов
/ 08 апреля 2019

В основном, у меня есть функция, которая должна вернуться к функции init(), где игра начинается заново, но по какой-то причине игра решает игнорировать все, что было создано в первый раз, и игнорировать removeChild() части кнопки перезагрузки.

Вместо этого мне пришлось прибегнуть к fscommand("quit");, так как игра просто разваливается.

есть ли ЛЮБОЙ способ заставить интервалы, изображения и кнопки (изображения) работать правильно из этого?

вот раздел инициализации:

private function init(e:Event = null):void
        {

            gameBackground.y = -600; //start position for scrolling animation
            gameLogo.x = (stage.stageWidth/2 - gameLogo.width/2 + 50);
            gameLogo.y = 55;
            gameLogo.scaleX = 0.8;
            gameLogo.scaleY = 0.8;

            startBtn.scaleX = 0.4;
            startBtn.scaleY = 0.4;

            startBtn.x = (stage.stageWidth/2 + 125);
            startBtn.y = 500;
            player.x = (stage.stageWidth - player.width) / 2;

            player.y = startBtn.y - 10;
            addChild(gameBackground);
            addChild(player);
            addChild(gameLogo);
            addChild(startBtn);
            addEventListener(MouseEvent.MOUSE_OVER, buttonHover);
            addEventListener(MouseEvent.MOUSE_OUT, buttonHoverOff);
            addEventListener(MouseEvent.CLICK, startgame);
            trace("event listener added");
        }

        public function buttonHover(e:Event):void{
            if (e.target == startBtn)
            {
                startBtn.x = (stage.stageWidth/2 + 128);
                startBtn.y = 504;
                startBtn.scaleX = 0.395;
                startBtn.scaleY = 0.395;
                mouseClick.play();
            }
        }

        public function buttonHoverOff(e:Event):void{
            if (e.target == startBtn)
            {
                startBtn.x = (stage.stageWidth/2 + 125);
                startBtn.y = 500;
                startBtn.scaleX = 0.4;
                startBtn.scaleY = 0.4;
            }
        }

        public function btnMovement():void
        {
            startBtn.y += 10;
        }
        //this function removes all objects for the start menu and goes into the game
        public function startgame(e:Event):void
        {
            if (e.target == startBtn)
            {
                removeEventListener(MouseEvent.MOUSE_OUT, buttonHoverOff);
                mouseHover.play();
                startMove = setInterval(startGameAnimation, 16.6);
                planeTakeOff.play();
                var btnMove:uint = setInterval(btnMovement, 16.6);
                if (startBtn.y > stage.stageHeight + 20) {
                    startBtn.y += 0;
                    startBtn.visible = false;
                    clearInterval(btnMove);
                }
                //game();
                //trace("objects removed.  game starting...");
            }
            trace("remove click found");
        }

вот раздел перезапуска:

public function endScreen():void
        {
            //removeEventListener(Event.EXIT_FRAME, endLoad);



            ENDScore.text = "Score: " + String(scoreBar);

            ENDScore.width = 200;
            var endFormating:TextFormat = new TextFormat();
            endFormating.size = 25;
            endFormating.font = "Consolas";
            endFormating.color= 0xFFFFFF;
            ENDScore.x = stage.stageWidth/2 - ENDScore.width/2 + 10;
            ENDScore.y = 415;
            ENDScore.setTextFormat(endFormating);
            endBtn.x = 660;
            endBtn.y = 460;
            endBtn.scaleX = 0.9;
            endBtn.scaleY = 0.9;
            addChild(endScr);
            addChild(ENDScore);
            addChild(endBtn);
            closeDetect();
            //trace("button");
            //trace(scoreBar);
        }

        public function closeDetect(e:Event = null):void {

            trace("button");
            endBtn.addEventListener(MouseEvent.CLICK, closeGame);
        }

        public function closeGame(e:Event):void
        {
            //trace("button found");
            //
                //trace("button clicked");
                ////endBtn.visible = false;
                //removeChild(enemyFighter);
                //removeChild(enemyFighter2);
                //removeChild(enemyFighter3);
                //removeChild(enemyFighter4);
                //removeChild(enemyFighter5);
                //removeChild(lMass1);
                //removeChild(lMass2);
                //removeChild(player);
                ////removeChild(bullet);
                //removeChild(endScr);
                //removeChild(endBtn);
                //removeChild(ENDScore);
                //
                //playerDeath = false;
                //thePlayerDies = 3;
                //scoreBar = 0;
                //removeEventListener(MouseEvent.CLICK, closeGame);
                ////init();
                //if (stage) init();
                //else addEventListener(Event.ADDED_TO_STAGE, init); 
                fscommand("quit");

        }
...