1

Flex( Flashではない)で使用可能なブラウザの幅と高さを取得するにはどうすればよいですか?

モニターの合計解像度を提供するCapabilities.screenResolutionYとscreenResolutionXがあり、stage.stageWidthとstage.stageHeightがありますが、ドキュメントには「StageオブジェクトのstageWidthプロパティを呼び出すと、同じではない呼び出し元に対して例外がスローされます。ステージ所有者としてのセキュリティサンドボックス(メインSWFファイル)」。また、ステージプロパティがnullになることもあります(ランダムなクラスにいる場合のように、非表示オブジェクトでどのように取得しますか?)。

では、これをFlexの方法で実行し、エラーをスローしないようにするにはどうすればよいでしょうか(私のアプリケーションは、ある時点で別のアプリケーションによってロードされる可能性があります)。

~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
だから私はいくつかのテストを行ってきました、そしてそれは次のように見えます

Rectangle(systemManager.getVisibleApplicationRect()).width
Rectangle(systemManager.getVisibleApplicationRect()).height 

必要な情報を教えてください。これらは、アプリケーションの初期化でも利用できます。

また、

systemManager.stage.stageWidth
systemManager.stage.stageHeight

同じ情報を教えてください。

systemManagerはアプリケーションとすべてのUIComponentのプロパティであるため、これらのクラスの1つに属していない限り(UIComponentの場合はApplicationの子だと思います)、systemManagerへの参照を取得する方法を見つける必要があります。他のタイプのクラスで。

~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
freakazoid_emは、FlexGlobals.topLevelApplicationを使用してsystemManagerへの参照を取得できるとコメントしました。これにより、Flexアプリケーションのどこからでも(いつでも)、表示されているブラウザーの幅と高さへの参照を取得できます。

4

1 に答える 1

0
var visibleWidth:Number = FlexGlobals.topLevelApplication.systemManager.getVisibleApplicationRect().width;
var visibleHeight:Number = FlexGlobals.topLevelApplication.systemManager.getVisibleApplicationRect().height;

// this seems to return the same values
var visibleWidth:Number = FlexGlobals.topLevelApplication.systemManager.stage.stageWidth;
var visibleHeight:Number = FlexGlobals.topLevelApplication.systemManager.stage.stageHeight;
于 2012-09-03T01:10:32.583 に答える