2014-12-20 3 views
0

У меня есть дочерний объект, который остается на сцене при изменении рамки. Итак, я gotoAndStop (2); и объект все еще там. Однако, когда я возвращаюсь к кадру. Объект находится на нижнем уровне, несмотря на то, что я изначально добавил его с помощью addChildAt (character, 1); Я думаю, что это добавляет его в первый слой? Кто-нибудь знает, как я могу исправить эту проблему сохранения объекта movieclip на верхнем уровне, несмотря на изменение кадров? Благодарю.Смена слоя объекта при переходе между кадрами?

+0

Вы нашли решение? – BadFeelingAboutThis

ответ

0

В AS3/Flash нижний слой - 0. Таким образом, addChildAt(character, 1) сделает ваш персонаж вторым до нижнего слоя. addChildAt(character, 0) сделает его самым нижним/задним слоем.

Если вы хотите, чтобы сделать его самый верхний слой, вы сделаете один из следующих действий:

addChild(character); //this is the shortest amount of code 

addChildAt(character, numChildren-1); //the is exactly the same as above 

setChildIndex(character, numChildren-1); //this is also the same but requires the character already be present on the display list 

Последний (setChildIndex) может быть предпочтительным, если ваш персонаж происходит на временной шкале (например, не создается с помощью код). Причина в том, что если вы измените код на происхождение чего-то, созданного на временной шкале, оно не исчезнет, ​​когда больше не появится на временной шкале.

Если вы хотите способ заставить что-то, чтобы всегда быть на вершине, вы можете сделать что-то вдоль этих линий:

this.addEventListener(Event.ADDED, bringToTop); 

function bringToTop(e:Event):void { 
    setChildIndex(character, numChildren-1); 
} 

Делая это, делает это так, всякий раз, когда какой-либо другой объект добавляется в качестве дочернего this , он установит символ в самый верхний слой/z-index.