Actionscript 3 多层次

Actionscript 3 多层次,actionscript-3,flash-cs5,tiles-game,Actionscript 3,Flash Cs5,Tiles Game,我正在阅读一篇关于创建多个关卡的教程,下面的内容让我很感兴趣 每一个等级,每一个等级都有一个等级,这似乎很自然 扩展AvoiderGame,并使用事件在它们之间切换。所以,我们 可能有名为AvoiderGameLevelOne、Avoidergamelevel2的类, 等,并让每一个发射一个“NavigationEvent.NEXT_LEVEL”,当 适当的那么document类可能会监听这个消息 事件,当它听到它时,它会运行“playScreen=new” 避免组织级别2()(或任何适当级别)

我正在阅读一篇关于创建多个关卡的教程,下面的内容让我很感兴趣

每一个等级,每一个等级都有一个等级,这似乎很自然 扩展AvoiderGame,并使用事件在它们之间切换。所以,我们 可能有名为AvoiderGameLevelOne、Avoidergamelevel2的类, 等,并让每一个发射一个“NavigationEvent.NEXT_LEVEL”,当 适当的那么document类可能会监听这个消息 事件,当它听到它时,它会运行“playScreen=new” 避免组织级别2()(或任何适当级别),并通过 通过所有的信息,如分数和时间,以这个新的 playScreen实例

我不完全确定该怎么做。我把我的stage放在一个叫做level1、level2等的类中,它是一个tile数组,并让它扩展我的主类。为了检查是否一切正常,我在main中添加了一个名为levelArray的公共静态变量,它是一个空白数组。然后在level1中,我将数组推入levelArray

所以对于我的一级班来说

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
,然后用每个级数替换它们。

这是正确的答案。在基于类的AS3中,不能在函数之外运行代码。如果你想在数组中添加一些东西,你要么在构造函数中,或者在另一个函数中,要么在数组声明中,就像上面的回答一样。我计划为不同的级别添加不同的敌人。谢谢,它看起来很有效,我只需要找出级别类的扩展部分。与您的问题不太相关,但我认为您不希望您的级别类扩展Main,是吗?我的意思是“一级”不是“主要”的类型,是吗?是的。我只是想,把这件事提出来可能会让他们沟通。我应该让它扩展MovieClip吗?根据级别类的复杂程度,您可能需要创建一个基本级别类,并让所有级别都扩展它。级别可以具有与级别对象通信的通用方法。您很可能会在Main中实例化一个新级别,并以这种方式与之通信。Level类不一定需要扩展任何内容(除非它实际上是一个MovieClip)。