AS3什么原因导致侧卷轴滞后?

时间:2014-04-28 14:32:25

标签: actionscript-3 flash-cs6 lag side-scroller

我根据书中的教程编写了一个侧卷轴。我的朋友做了同样的事情,他的工作非常好。

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

只有在有墙壁时才会出现滞后现象。在舞台上。当我滚过它们时,滞后消失,然后返回。

Walls和Floors都使用相同的代码(它们都被指定为' floorObjects'变量)并使用相同的碰撞代码,但是我无法弄清楚为什么会出现延迟。

如果角色离开,角色从哪里开始(大约60x),就会出现大量的延迟。如果我走对了,就不会有太多的延迟,直到屏幕开始滚动。

离开后的滞后我相信可能与程序阻止滚动地图等有关。但是我无法弄清楚为什么在试图向右移动时存在滞后。

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

滚动代码;

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();

            }
        }

更新:

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

1 个答案:

答案 0 :(得分:1)

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

代码很好。

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

这是一个猜测,我有时会收到此错误。

确保优化图片!

如果他们是从照相馆或illustratro导入的话,那么flash就必须处理那些复杂的矢量点。

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