#actionscript-3 #reset #restart #application-restart
#actionscript-3 #Сброс #перезапустить #приложение-перезапуск
Вопрос:
в принципе, у меня есть функция, которая должна возвращаться к 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");
}
Комментарии:
1. Сделайте это отдельным видеороликом со связанным классом, поэтому, когда вам нужна новая игра, вы создаете новый экземпляр этого класса и присоединяете к stage, а затем очищаете и сбрасываете существующий.
2. @Organis спасибо за отзыв! Я попробовал ваш метод, но по какой-то причине я снова получил ту же ошибку, но в другой области (функция, ведущая к перезапуску) После двух попыток исправить ваш метод я решил преобразовать кнопку перезапуска в кнопку выхода. Спасибо вам за помощь! (Я новичок в AS3 по состоянию на октябрь 2018 года)