我正在制作的游戏遇到一个奇怪的问题。 我会提前道歉,因为我是AS3的新手,所以请耐心等待我:)
我将从解释我的游戏如何运作开始:
首先,它添加了一个主菜单屏幕,其上有一个开始按钮。 当您按下开始按钮时,主菜单将被删除,并添加一个级别屏幕。 因此,关卡屏幕上有3个按钮,每个按钮代表自己的关卡,如果你已经完成了第一关等等,你只能看到按钮2。
当我按下其中一个按钮时,游戏会添加角色movieclip和世界movieclip。 所有级别都在世界movieclip中,因此第一级是第1帧,第二级是第2帧等。
因此,如果我按下按钮1,它会(简化):
的addChild(世界); world.gotoAndStop(1);
但问题是,有时它会转到第3帧而不是第1帧。但当我关闭它并再试一次它工作正常。 它有时会连续几次这样做。 当游戏按照预期进入第1帧时,游戏的其余部分都没有问题。
有没有人经历过这种情况,或者知道是什么造成的?
相关代码:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.ui.GameInput;
public class Main extends MovieClip {
public var character:Character;
public var mainMenu:MainMenu;
public var backGround:BackGround;
private var dangers:Dangers;
public var worldMap:WorldMap;
public var worldLevel:int;
public var currentLevel:int;
public function Main() {
worldLevel = 1;
backGround = new BackGround;
world = new World;
dangers = new Dangers;
gameOverScreen = new GameOverScreen;
worldMap = new WorldMap;
mainMenu = new MainMenu
addChild(mainMenu)
character = new Character();
//-------------- eventlisteners ---------------
addEventListener(Event.ENTER_FRAME, moveWorld)
mainMenu.PlayButton.addEventListener(MouseEvent.CLICK, gotoWorldMap)
//------------------- world buttons --------------------
worldMap.buttonWorld1.addEventListener(MouseEvent.CLICK, gotoWorld1)
worldMap.buttonWorld2.addEventListener(MouseEvent.CLICK, gotoWorld2)
worldMap.buttonWorld3.addEventListener(MouseEvent.CLICK, gotoWorld3)
}
//------------------ function go to world map------------------------
function gotoWorldMap (m:MouseEvent):void
{
mainMenu.parent.removeChild(mainMenu);
addChild(worldMap);
}
//----------------- function world 1 -------------------
function gotoWorld1 (m:MouseEvent):void
{
addChild(backGround);
addChild(world);
world.gotoAndStop(1);
addChild(character);
character.x = 300;
character.y = 460;
character.gotoAndStop(3);
worldMap.parent.removeChild(worldMap);
world.worldDangers.gotoAndStop(1);
world.SafeGround.gotoAndStop(1);
world.WorldWalls.gotoAndStop(1);
currentLevel = 1;
addChild(gamePanel);
}
//----------------- function world 2 ---------------------
function gotoWorld2 (m:MouseEvent):void
{
// same as gotoWorld1, it just goes to frame 2 instead.
}
//----------------- function world 3 -----------------------
function gotoWorld3 (m:MouseEvent):void
{
// same again
}