0

我一直在根据书中的教程编写横向滚动条。我的朋友也这样做了,他的工作很完美。

我只是真正改变了一些变量名称(我也做了不同的动画),但由于某种原因,当我的角色移动时,会有很大的延迟。

然而,只有在舞台上有“墙”时才会出现滞后。当我滚动过去时,滞后消失,然后返回。

Walls 和 Floors 都使用相同的代码(它们都被分配为“floorObjects”变量)并使用相同的碰撞代码,但是我无法弄清楚为什么会涉及延迟。

如果角色向左移动,则从角色开始的位置(大约 60 倍)开始,会有大量的滞后。如果我向右走,则不会有太多延迟,直到屏幕开始滚动。

我认为向左移动的滞后可能与程序阻止滚动地图等有关。但我无法弄清楚为什么尝试向右移动时会出现滞后。

我已经列出了滚动代码和主循环,如果需要,我可以上传冲突代码,任何帮助将不胜感激。

滚动代码;

public function scrollGame()
        {

            var stagePosition:Number = gameLevel.x + player.mc.x;
            var rightEdge:Number = stage.stageWidth - edgeDistance;
            var leftEdge:Number = edgeDistance;
            //Scroll the GameLevel to the Left if player moves right
            if(stagePosition > rightEdge)
            {
                gameLevel.x -= (stagePosition - rightEdge);
                //Prevent the game scrolling off the stage
                if (gameLevel.x < -(gameLevel.width-stage.stageWidth)) 
                    gameLevel.x = -(gameLevel.width-stage.stageWidth);                      
            }
            //Scroll the GameLevel to the right if player moves left
            if(stagePosition < leftEdge)
            {
                gameLevel.x += (leftEdge - stagePosition);
                //Prevent the game scrolling off the stage
                if(gameLevel.x > 0) 
                    gameLevel.x = 0;                
            }

        }

主循环:

public function gameLoop(e:Event)
        {
            //Get Time Difference
            if(lastTime == 0) lastTime = getTimer();
            var timeDiff:int = getTimer() - lastTime;
            lastTime += timeDiff;

            //Game Cycle tasks
            //Only perform if in play mode
            if(gameMode == "play")
            {
                moveCharacter(player, timeDiff);
                moveEnemies(timeDiff);
                checkCollisions();
                scrollGame();

            }
        }

更新:

所以我“分析”了它,大部分时间都花在 MoveCharacter() 函数中,使用 gotoAndStop() 命令。所以我删除了它,它没有任何区别,仍然滞后。然后我也移除了敌人,仍然滞后。但是将质量降低到低质量已经以某种方式解决了它(尽管现在质量很差)关于导致延迟的原因以及如何解决它的任何想法?

4

1 回答 1

1

这是来自flash大学的书,不是吗?

代码很好。

我知道什么会滞后你的 Flash 游戏。

虽然这是一个猜测,但我确实有时会收到此错误。

确保您的图像已优化!

如果它们是从 photo shop 或 illustratro 导入的,那么 flash 将不得不处理那些复杂的矢量点。

将 .png 用于透明图像,位图也不会受到伤害。

于 2014-04-29T03:12:50.617 回答