2

私がやろうとしていることの完全な説明をします。

別の SWF としてビデオ プレーヤーがあります。このビデオ プレーヤーには、Sprite を拡張する VideoContainer クラスがあります。このクラスには、ビデオと、特定のビデオ ボタンを備えたコントロール バーが含まれています。

この SWF は、他のすべての上にあるメニューを持つ別のメイン SWF にロードされます。ビデオ SWF で [フルスクリーン] をクリックすると、メニューが VideoContainer オブジェクトの上にあることを除いて、すべてがスムーズに進みます。

ロードされた SWF の表示順序を変更して、フルスクリーンで他のすべての上に配置し、フルスクリーンがオフになったときに元に戻す方法が必要です。これはすべて、ビデオ プレーヤー内で行う必要があります。また、子の構成は変更される可能性があるため (ビデオ プレーヤーはメイン SWF の別の場所にロードされる可能性があります)、特定の変更されていないパスを使用することはできません。

のようなことをしたいと思いstage.getUpperMostParentOf(VideoContainer)ます。何か案は?ありがとう。

4

2 に答える 2

5

読み込んだswfをもう一度追加できますか?メイン 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 に答える