Movieclip SOMETIMES在错误的帧AS3上启动

时间:2014-11-23 11:28:40

标签: actionscript-3 frames

我正在制作的游戏遇到一个奇怪的问题。 我会提前道歉,因为我是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
        }

0 个答案:

没有答案