2010-03-31 5 views
1

Я создаю игру, интерфейс которой является одним из первых предметов для загрузки на экран. Звуковая кнопка, пауза и все биты -Укладку Movieclip в Actionscript

Во время игры - всякая усадьба вещей динамически добавляется и удаляется на сцену. Поэтому мой интерфейс идет за моей игровой сценой.

Как обеспечить, чтобы мувиклип всегда оставался сверху?

Могу ли я переопределить addChild моего класса документов, и каждый раз, когда добавляется новый ребенок, я восстанавливаю интерфейс вверху?

ответ

1

Вы можете использовать setChildIndex для переупорядочения объектов, которые уже содержатся в MovieClip или Sprite. Например, если у вас есть объект, называемый контейнер, который содержит Redball, blueBall и многие другие объекты мяч, вы можете использовать следующее, чтобы убедиться, Redball позади все остальное:

container.setChildIndex(redBall, 0); 

Одинаково вы можете сделать убедитесь, что blueBall будет отображаться Infront всего остального с помощью:

container.setChildIndex(blueBall, container.numChildren-1); 

addChildAt сортирует вас для добавления детей прямо в правильное положение, и setChildIndex позволит вам повторно положению объектов уже размещено. Надеюсь, это поможет.

Debu

+0

Sweet. Thats uber helpful. – Glycerine

+0

Без проблем, рад, что это помогло :) – debu

1

Загляните в addChildAt, он позволяет указать индекс, в который должен быть добавлен новый объект.

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html#addChildAt%28%29

Хорошая стратегия, чтобы сохранить все элементы интерфейса в один родительский Sprite/MovieClip, и все игровые активы в другой. (С интерфейсом один сверху)

+0

Приятный, я действительно смотрел, и я мог видеть, как это работает, но я не был уверен, как он был собран. – Glycerine

+0

+1 для комментариев о сохранении всех элементов интерфейса в одном из родителей Sprite/MovieClip. Это правильный способ приблизиться к нему. – aaaidan

0

С вашим предложением, ребята, я сделал это, по-видимому, если вы AddChild объект уже на экране, это просто reindex'd к вершине. Это выглядит нормально?

private var topLevelChildrenArray:Array = []; 

public function addTopLevelChild(child:DisplayObject):DisplayObject 
{ 
    topLevelChildrenArray.push(child) 
    return this.addChildAt(child, this.numChildren - 1); 
} 

override public function addChild(child:DisplayObject):DisplayObject 
{ 
    this.addChildAt(child, this.numChildren); 

    for each(var topChild:DisplayObject in topLevelChildrenArray) 
    { 
     super.addChild(topChild); 
    } 

    return child 
} 
Смежные вопросы