2013-09-05 205 views
0

我正在阅读一篇关于创建多层次的教程,下面真的很关心我应该如何去做这件事。多层次

为每个关卡创建一个类似乎很自然,每个类别 都会延伸AvoiderGame,并使用事件在它们之间切换。因此,我们 可能有名为AvoiderGameLevelOne,AvoiderGameLevelTwo, 等的类,并且当 适当时,让每个类都触发“NavigationEvent.NEXT_LEVEL”。据推测,文档类会监听这个事件,当它听到它时,它会运行“playScreen = new AvoiderGameLevelTwo()”(或者哪个级别是合适的),并通过 通过所有信息,例如分数和时间到这个新的 playScreen实例。

我不完全确定如何去做这件事。我把我的舞台放置在一个名为level1,level2等的类中,并且让它扩展我的主类。为了检查一切是否正常,我在main中添加了一个名为levelArray的公共静态变量,这是一个空白数组。然后在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显示为空白。可能是因为这两个班级没有正确沟通?任何想法,如果我正在接近这个正确的方式?

+0

与你的问题并不真正相关,但我不认为你想让你的Level类扩展主要是你吗?我的意思是'Level1'不是'Main'的一种类型吗? – Cadin

+0

是的。我只是认为有这个参考主要可能让他们沟通。我应该只是扩展MovieClip吗? – Bindlestick

+0

根据级别类别的复杂程度,您可能需要创建一个基础级别类并让所有级别扩展该级别。 Level可以具有用于与Level对象进行通信的通用方法。很可能你会在Main中实例化一个新的Level并且以这种方式与之通信。 Level类不一定需要扩展任何东西(除非它实际上是一个MovieClip)。 – Cadin

回答

2

我不知道你的概念的其余部分是否合理,但我认为你已经显示的部分的语法是关闭的。尝试:

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; 
     } 
    } 

} 

编辑:如果不同的关于每个级别的唯一事情是构成地面阵列,可以考虑的是,你并不需要一个新的类为每个级别,只是一个新的阵列。你可以为该类中的每个级别定义数组,然后用每个级数替换它们。

+0

这是正确的答案。您不能在基于类的AS3中的函数之外运行代码。如果你想添加一些东西到数组中,你可能需要在构造函数,另一个函数中执行,或者在数组声明中完成,就像在上面的答案中所做的那样。 –

+0

我打算为不同级别添加不同的敌人。谢谢,它看起来像它的工作,我只需要找出级别类的扩展部分。 – Bindlestick