我正在阅读有关创建多个关卡的教程,下面对我应该如何做到这一点非常感兴趣。
每个级别制作一个类似乎是很自然的,每个类 扩展避免游戏,并使用事件在它们之间切换。所以,我们 可能有名为 AvoiderGameLevelOne、AvoiderGameLevelTwo、 等等,并让每个人在以下情况下发射一个"NavigationEvent.NEXT_LEVEL" 适当。大概然后文档类会侦听这个 事件,当它听到它时,它将运行"播放屏幕 = 新 AvoiderGameLevelTwo()"(或任何合适的级别),并通过 通过所有信息,如分数和时间到这个新的 播放屏幕实例。
我不完全确定如何做到这一点。我把我的舞台,这是一个叫做 level1、level2 等的类中的图块数组,并让它扩展了我的主要类。为了检查一切是否正常,我在main中添加了一个名为levelArray的公共静态var,这是一个空白数组。然后在 level1 中,我将我的数组推入 levelArray。
所以对于我的1级课程
package {
public class Level1 extends Main {
public var floor1:Array = new Array();
floor1[0] = [2,1,1,1,1,1,2];
floor1[1] = [1,1,1,1,1,1,1];
floor1[2] = [1,1,1,2,1,1,1];
floor1[3] = [1,1,1,1,1,1,1];
floor1[4] = [1,1,1,2,1,1,1];
floor1[5] = [1,1,1,1,1,1,1];
floor1[6] = [2,1,1,1,1,1,2];
public function Level1() {
Main.levelArray.push(floor1);
}
}
}
似乎不起作用。 levelArray 显示为空白。可能是因为两个类没有正确通信?如果我以正确的方式接近这一点,有什么想法吗?
我不知道你的概念的其余部分是否合理,但我认为语法对于你展示的部分来说是错误的。 尝试:
package {
public class Level1 extends Main {
public var floor1:Array = new Array( [2,1,1,1,1,1,2],
[1,1,1,1,1,1,1],
[1,1,1,2,1,1,1],
[1,1,1,1,1,1,1],
[1,1,1,2,1,1,1],
[1,1,1,1,1,1,1],
[2,1,1,1,1,1,2]
);
public function Level1() {
Main.levelArray = floor1;
}
}
}
编辑:如果每个级别唯一不同的是形成地板的数组,您可以考虑这样一个事实,即每个级别不需要一个新类,只需要一个新数组。 您可以为类中的每个级别定义数组,该数组super
到此级别,然后只需在每个进度中替换它们。