2013-09-12 3 views
0

У меня есть класс Enemy (который содержит все клипы, которые являются врагами), класс Level (который отображает макет уровней в массиве) и мой основной класс документа (который создает макет уровни в плитки). Моя цель состоит в том, чтобы иметь разных врагов для каждого уровня.Добавление врагов из массива

Enemy Класс: Класс

private var enemy1:Enemy1 = new Enemy1(); 
private var enemy2:Enemy2 = new Enemy2(); 

public var enemyArray:Array = new Array(enemy1, enemy2); 

Уровень:

var enemies:Enemy = new Enemy(); 
levelStageNumber = 1; 
if (levelStageNumber == 1) { floor1F(); Main.floor = floor1; } 
private function floor1F():void 
     { 
      floor1 = new Array(); 
      floor1[0] = [1,1,1,1,1,1,1]; 
      floor1[1] = [1,1,1,1,1,1,1]; 
      floor1[2] = [1,1,1,2,1,1,1]; 
      floor1[3] = [2,1,1,2,1,1,2]; 
      floor1[4] = [1,1,1,2,1,1,1]; 
      floor1[5] = [1,1,1,1,1,1,1]; 
      floor1[6] = [1,1,1,1,1,1,1]; 

      addChild(enemy2.enemyArray[0]); 

     } 

Главный класс:

public static var floor:Array = []; //for the main class to talk to the level class 
private var level:Level = new Level(); 

addChild(level); 

    for (var Y:int=0; Y<floor.length; Y++) 
      { 
       for (var X:int=0; X<floor[Y].length; X++) 
       { 
        var cell:MovieClip = new Tile(X,Y); 
        cell.gotoAndStop(floor[Y][X]); 
        cell.x = ((X-Y)*level.tileh)+365; 
        cell.y = ((X+Y)*level.tileh/2)+70; 
        addChild(cell); 
       } 
      } 

Может быть, я буду о всей этой установке неправильный путь, но я чувствую, есть более простой способ выполнить то, что я делаю. Поэтому у меня есть 2 проблемы. Во-первых, как я могу добавить двух врагов из врага? Во-вторых, враг сейчас появляется под плиткой, вероятно, потому, что главный класс - тот, который создает плитки. Можно ли каким-то образом заставить врагов добавить в основной класс?

ответ

1

(1) Вы можете добавить любой противник в массиве в список отображения, указав это индекс в массиве:

addChild(enemyArray[0]); 

addChild(enemyArray[1]); 

(2) Порядок, в котором вы что-то добавить в список отображения стадии, в определяет то, что находится сверху.

Мой совет будет заключаться в том, что вы добавляете напольные плитки в класс уровня, а затем добавляете врагов.

Также для уровня, вероятно, лучше, если у вас есть массив врагов, а не в классе Enemy. enemyArray содержит коллекцию врагов, поэтому вы можете иметь это на своем уровне, поскольку оно представляет врагов на этом уровне.

Класс врага должен иметь только свойства и методы, характерные для Врага. Подобно движению или стрельбе будут методы, а hitPoints или мощность могут быть свойствами Enemy

+0

Спасибо! Что делать, если я хотел добавить два одинаковых индекса, таких как enemyArray [0] дважды? Как мне это сделать? – Bindlestick

+0

Это еще один вопрос. Лучше иметь 1 вопрос на вопрос, поскольку он делает сайт более полезным. Ответы не должны быть скрыты в комментариях. Я скажу, что ваш новый вопрос предполагает, что вам нужно сделать шаг назад и узнать о массивах и DisplayObjects/DisplayList, поэтому вы не угадываете. – prototypical

Смежные вопросы