2013-04-23 7 views
0

Я делаю флеш-игру и получаю быстрый запрос о расслоении/порядке объектов, которые динамически добавляются на сцену. У меня есть указатель мыши, замененный перекрестием с вражескими кораблями, летящими по экрану, но проблема, с которой я сталкиваюсь, заключается в том, что вражеские корабли появляются над перекрестием, так что, когда я иду на «цель» корабля, перекрестие не видно, как он находится под кораблем. Как я могу это изменить?Изменение слоев динамических объектов

спасибо.

ответ

0

Это может сработать для вас. Я добавил дополнительную строку кода в следующих функций:

function sendEnemy(e:Event) 
{ 
    var enemy = new EnemyShip(); 
    stage.addChild(enemy); 
    stage.addChild(crosshair);//brings crosshair to topmost level on stage 
} 

function sendEnemyMed(e:Event) 
{ 
    var enemymed = new EnemyShipMed(); 
    stage.addChild(enemymed); 
    stage.addChild(crosshair);//brings crosshair to topmost level on stage 
} 

function sendEnemySmall(e:Event) 
{ 
    var enemysmall = new EnemyShipSmall(); 
    stage.addChild(enemysmall); 
    stage.addChild(crosshair);//brings crosshair to topmost level on stage 
} 

После того, как вы добавите что-нибудь на сцене, вам просто нужно обновить Z-индекс Crosshair, вызвав «stage.addChild (перекрестие)», который снова приносит перекрестие на самом верхнем уровне.

1
+0

Привет, я смотрел на них достаточно забавно, но поскольку я просто начинающий, я не был уверен, как я буду использовать его? – David

0

Вы можете добавить каждый космический корабль с помощью метода addChildAt(spaceship, 0);, где ноль - индекс, который должен быть меньше или равен индексу перекрестия. Вы также можете создать отдельный Sprite для ваших космических кораблей. И добавьте его на сцену, прежде чем добавить перекрестие.

1

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

Например, вы можете создать слой под названием enemyLayer:

var enemyLayer:Sprite = new Sprite; 

Вы бы затем добавить свой enemyLayer первым на сцену, а затем ваш крестик:

stage.addChild(enemyLayer); 
stage.addChild(crosshair); 

Всякий раз, когда вы добавляете врага, вы добавили бы его в вражеский слой:

enemyLayer.addChild(enemy); 

При таком подходе к дизайну, вам не нужно беспокоиться о том, чтобы постоянно манипулировать своим перекрестием, чтобы убедиться, что он на вершине. Перекрестье ВСЕГДА будет на высоте.

+0

Я согласен с тобой. +1 – shinobi

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