2

我将对我正在尝试做的事情进行完整的解释。

我有一个视频播放器作为单独的 SWF。在这个视频播放器中,我有一个扩展 Sprite 的 VideoContainer 类,它包含视频和一个带有特定视频按钮的控制栏。

此 SWF 加载到另一个主 SWF 中,该 SWF 有一个位于其他所有内容之上的菜单。当我在视频 SWF 中单击“全屏”时,一切都很顺利,除了菜单仍然位于 VideoContainer 对象的顶部。

我需要一种方法来更改加载的 SWF 的显示顺序,将其放在全屏上的所有其他内容之上,并在全屏关闭时将其更改回来。所有这些都需要在视频播放器中进行。另外,孩子的配置可以改变(视频播放器可以在主SWF中的不同位置加载),所以我不能使用某个不变的路径。

我想做类似的事情stage.getUpperMostParentOf(VideoContainer)。有任何想法吗?谢谢。

4

2 回答 2

5

您可以再次添加加载的 swf 吗?从您的主要瑞士法郎:

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

另一种查找不是舞台的最顶层父级的方法是使用 while 循环“爬上”显示树。

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

trace( 'uppermost parent: ' + parent );

可能有多种方法可以完成您想要的事情,但是如果没有看到您的实际代码,很难确切地知道如何解决这个问题。

于 2011-01-21T08:51:10.620 回答
0

我已经这样做了,而且非常直接......来自视频播放器:

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);
    }
}
于 2011-01-21T09:38:24.227 回答