【发布时间】:2018-08-31 06:53:21
【问题描述】:
大家好,所以我遇到了一些麻烦,我有平台添加到舞台上,这些平台的宽度大小不同。我在 for Loop 中尝试做的是在舞台上当前平台 x 位置的右侧添加更多平台。我遇到了麻烦,因为它们的尺寸不同,所以它们最终在这款横向卷轴游戏中相互重叠。我将 Platform MC 对齐到注册的右侧,如下所示:
这是较小的电影剪辑:
我这样做是因为我想为平台影片剪辑中的每一帧添加不同的障碍。
添加初始平台:
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");
}
我正在尝试获取当前平台,这是我添加到舞台的最后一个平台并获取它的宽度,以便我可以在最后添加它,但它仍然在做一些奇怪的事情并且随着时间的推移重叠,
所以我想知道是否有人知道我应该如何解决这个问题,所以每当我将新平台影片剪辑添加到舞台时,它会与添加到舞台的最后一个平台影片剪辑的右侧对齐,其中有一些空间之间是这样的:
提前谢谢你!
【问题讨论】:
-
一种方法是使用
offsetX在循环之前设置为零(或其他任何值)的变量。然后在循环内部:platforms.x = offsetX; offsetX += platforms.width + 50;(50 是平台之间的固定间隙)。然后在第一个平台之后添加第二个平台 50px,依此类推。 -
好的,我明白你的意思了。 offsetX 变量不是 AS3 中的内置变量还是说要创建我自己的 offsetX 变量?
-
创建自己的并将其用作每个平台的 x 值。您还可以从前一个元素 (
aPlatformArray[i-1]) 中选择.x和.width,为其添加间隙值,并将其用作新平台的 x 值。 (请注意,您只能在 i > 0 时执行此操作,因为该数组在第一次运行时为空,除非您将第一个平台放在循环之前。) -
好的,非常感谢您提供的所有信息。所以我可以做类似'aPlatformArray[i-1].x'的事情吗?我会试一试,看看我能想出什么。如果我遇到任何问题,你认为你可以帮忙吗?我真的很感激。
-
所以它仍然给我一些问题,它正在将它们添加得更远,但随着它的继续,它们变得越来越近,但不会超过两次。我更新了我的代码,所以你可以看看,也许告诉我我做错了什么。谢谢!
标签: actionscript-3 flash flashdevelop animate-cc