屏幕滚动不适用于右边缘和底边AS3

时间:2013-08-03 11:20:54

标签: actionscript-3 scroll enterframeevent

以下代码在我的游戏中滚动到屏幕的左边缘或右边缘时起作用;然而,当到达“地图”的边缘时滚动到屏幕的右边缘或底边缘时,我能够看到超出地图的边缘,即我看到的是白色空间,即舞台的颜色。然而,当滚动到地图的左边缘或顶边缘时,我无法看到地图边缘之外。

public function scroll_screen():void { //scrolling left, right, up, down

     var stagePositionX:Number = container.x+player.x;
     var rightEdge:Number = stage.stageWidth-edgeDistance;
     var leftEdge:Number = edgeDistance;

     var stagePositionY:Number = container.y+player.y;
     var bottomEdge:Number = stage.stageHeight-edgeDistance;
     var topEdge:Number = edgeDistance;

        //horizontal scrolling
        if (stagePositionX > rightEdge) {
            container.x -= (stagePositionX-rightEdge);
            if (container.x < -(container.width-stage.stageWidth)) container.x = -(container.width-stage.stageWidth);
        }
        if (stagePositionX < leftEdge) {
            container.x += (leftEdge-stagePositionX); 
            if (container.x > 0 )container.x = 0;

        }

        //vertical scrolling
        if (stagePositionY > bottomEdge) {
            container.y -= (stagePositionY-bottomEdge);
            if (container.y < -(container.height-stage.stageHeight)) container.y = -(container.height-stage.stageHeight);
        }
        if (stagePositionY < topEdge) {
            container.y += (topEdge-stagePositionY);
            if (container.y > 0) container.y = 0;
        }
    }

希望有道理,谢谢

1 个答案:

答案 0 :(得分:0)

**更新* *

您的问题是,当您的形状远离初始矩形时,container.width会发生变化。

如果你创建一个var initialContainerWidth并保存容器宽度,直到你向它添加任何形状,然后使用这个保存的变量而不是container.width,它将正常工作。或者您可以将飞行形状直接添加到舞台上,这样它们就不会扩展容器的尺寸。

您只需硬编码1386而不是container.width来检查它。