AS3: Как найти родителя глубоководного спрайта со сцены?

StackOverflow https://stackoverflow.com/questions/4756790

Вопрос

Я дам полное объяснение того, что я пытаюсь сделать.

У меня есть видеоплеер как отдельный SWF. В этом видеоплеере у меня есть класс VideoContainer, расширяющий Sprite, который содержит видео и панель управления с определенными кнопками видео.

Этот SWF загружен в другой основной SWF, в котором есть меню, которое находится на вершине всего остального. Когда я нажимаю «FullScreen» в видео SWF, все идет гладко, за исключением того, что меню остается на вершине объекта VideoContainer.

Мне нужен способ изменить порядок отображения загруженного SWF, положить его поверх всего остального на полноэкранном режиме и изменить его обратно, когда полноэкранной. Все это должно быть сделано в видеоплеере. Кроме того, конфигурация детей может измениться (видеоплеер может быть загружен в разных местах в основном SWF), поэтому я не могу использовать определенный неизвестный путь.

Я хотел бы сделать что -то вроде stage.getUpperMostParentOf(VideoContainer). Анкет Любые идеи? Спасибо.

Это было полезно?

Решение

Можете ли вы просто добавить загруженный SWF снова? От вашего основного SWF:

addChild( menu ); // -- the menu sprite
addChild( videoSWF ); // -- the loaded swf containing the video player

Еще один подход к поиску самых лучших родителей, который не является сценой, - это «подниматься» вверх по дереву дисплея с помощью цикла.

var container:DisplayObjectContainer = videoContainer.parent;
while( container.parent != null && containert.parent != stage )
{
     container = container.parent
}

trace( 'uppermost parent: ' + parent );

Вероятно, есть несколько способов выполнить то, что вы хотите, но, не видя ваш фактический код, трудно точно понять, как решить это.

Другие советы

Я сделал это и довольно прямолинейно ... от видеоплал:

var oldParent:DisplayObjectContainer;
function goFullscreen() {
    oldParent=parent;
    stage.addChild(this);
    stage.displayState=StageDisplayState.FULL_SCREEN;
    stage.addEventListener(Event.RESIZE, resize);
}

function resize(e) {
    if(stage.displayState!=StageDisplayState.FULL_SCREEN) {
        stage.removeEventListener(Event.RESIZE, resize);
        oldParent.addChild(this);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top