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");
}
解决方案
推荐阅读
- c - 替换指针数组中的特定字符
- ionic-framework - 如何使用 php 在 ionic3 中显示 youtube json 数据
- c++ - opencv_world300d.dll 丢失
- google-analytics - 在谷歌标签管理器上跟踪资源网址
- redux - 如何以不同的状态存储动作?
- postgresql - 恢复 PostgreSQL 数据库后索引损坏
- timer - PIC18F47K42 上的 Timer0 计数寄存器的增量快于预期
- javascript - 输入道具不适用于纯功能组件?
- python - 如何计算联合分布的熵?
- opencv - 如何使用opencv将最近的点连接在一起