如何将不同大小的影片剪辑彼此相邻? AS3

时间:2018-03-21 23:59:23

标签: actionscript-3 flash flashdevelop animate-cc

大家好,所以我遇到了一些问题我有平台,我添加到舞台,宽度不同的大小。我想在我的for循环中尝试做的是在舞台上当前平台x位置的右侧添加更多平台。我遇到了麻烦,因为它们的大小不同,所以最终会在这个横向卷轴游戏中相互叠加。我将平台MC与注册右侧对齐如下:

enter image description here

这是尺寸较小的影片剪辑:

enter image description here

我这样做是因为我想为Platform Movie Clip中的每个帧添加不同的障碍。

添加初始平台:

private function addInitPlatform():void 
    {
        platforms = new mcPlatforms();
        platforms.x = (stage.stageWidth / 2) - 380;
        platforms.y = (stage.stageHeight / 2) + 175;
        addChildAt(platforms, 1);
        aPlatformArray.push(platforms);
    }

然后添加新平台:

private function addPlatForms():void
    {
        //Loop trhough Platform Array
        for (var i:int = 0; i < aPlatformArray.length; i++) 
        {
            var currentPlat:mcPlatforms = aPlatformArray[i];

            nOffSetX += currentPlat.width + 50;

            //Add platforms
            platforms = new mcPlatforms();
            platforms.x = nOffSetX;
            platforms.y = (stage.stageHeight / 2) + 175;
            addChildAt(platforms, 1);
            aPlatformArray.push(platforms);
            break;
        }
        trace(aPlatformArray.length + " NPLATFORMS");
    }

我正在尝试获取当前平台,这是我添加到舞台的最后一个平台并获得它的宽度,所以我可以在最后添加它但是它仍然会做一些奇怪的事情,并且随着时间的推移重叠,

所以我想知道是否有人知道我应该如何解决这个问题所以每当我添加一个新的平台Movie Clip到舞台时它就会在最后一个平台的右侧对齐添加到舞台中的一些空间介于两者之间:

enter image description here

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我猜你的库里有很多不同的平台,设置了Linkage名称。不确定你是否希望它们是随机顺序,但无论如何你可能想要从数组中选择它们,所以:

var aPlatformsArray:Array = [p1,p2,p3]; //Platform Mc's from library
var addedPlatforms:Array = new Array(); //Array where we store added platforms

第一种方法是在添加每个平台后简单地提高偏移量:

var offsetX:Number = 0; //Starting x for the first platform

for(var i:int=0; i<10; i++){
    //Just picking random ones from the Linkage array:
    var platform:MovieClip = new aPlatformsArray[Math.floor(Math.random() * aPlatformsArray.length)]();
    platform.y = 200;
    platform.x = offsetX;
    offsetX = platform.x + platform.width + 50;
    addChild(platform);
    addedPlatforms.push(platform);
}

实际上你不需要担心第二种方法,因为它在技术上比较慢。

但主要区别在于,现在我们有一个阵列,我们选择平台到舞台,另一个阵列,我们推动添加平台。此时不需要第二个数组,但您可能稍后需要它。

对于偏移计算,我们使用“previous”元素的xwidth +固定间隙。

如果您只是需要平台的固定订单,那么您将使用类似于循环的条件,并按正确的顺序选择平台:

for(var i:int=0; i<aPlatformsArray.length; i++){
    var platform:MovieClip = aPlatformsArray[i];

让我知道这是否有效,或者我是否有错误。