Порядок слоя AS3 - PullRequest
       31

Порядок слоя AS3

1 голос
/ 23 октября 2011

Я создал два пустых Спрайта , которые будут служить слоями , bottom_spr и top_spr

При нажатии кнопки появляется MovieClip , который следует за вашей мышью, пока вы не нажмете, затем его положение будет фиксированным.

Как только кнопка нажата, я добавляю детский клип к нужному спрайту.

К сожалению, система слоев не работает, потому что они расположены в том порядке, в котором я их размещаю, спрайты, похоже, не влияют на это.

Как это возможно?

private var ground_spr:Sprite;
private var units_spr:Sprite;

public function Game() {
addEventListeners();

ground_spr = new Sprite();
units_spr= new Sprite();

addChild(ground_spr);
addChild(units_spr);
}

private function addEventListeners(){
groundBtn.addEventListener(MouseEvent.CLICK, clickGroundBtn);
unitBtn.addEventListener(MouseEvent.CLICK, clickUnitBtn);
}

private function clickGroundBtn(event:MouseEvent){
    var ground = new Ground_mc();
follow();
ground_spr.addChild(ground);
}

private function clickUnitBtn(event:MouseEvent){
    var unit = new Unit_mc();
follow();
units_spr.addChild(unit);
}

1 Ответ

4 голосов
/ 23 октября 2011

Ваш вопрос очень расплывчатый, но я постараюсь ответить на него. Если вы уточните, как вы хотите, чтобы ваши объекты были упорядочены точно, я могу лучше ответить на ваш вопрос. Можно добавить слой абстракции поверх обработки глубины, если вам это нужно. В этом случае я не вижу особой необходимости, но я покажу вам несколько вещей, которые вы могли бы сделать.

Чтобы добавить объект в конец экрана:

this.setChildIndex(objName, 0);

Чтобы добавить объект в переднюю часть экрана:

this.setChildIndex(objName, this.numChildren - 1);

Чтобы поменять глубину двух объектов:

this.swapChildren(objA, objB);
//Note this is expecting two DisplayObjects so you may have to do:
this.swapChildren(objA as DisplayObject, objB as DisplayObject);
...