0

Air/Flashアプリケーションのコンパイル中に設定された「元の」ステージの高さと幅を取得する方法を知っている人はいますか

アプリケーションを1920x1080にコンパイルするように設定しました。

私はstage.scaleMode=StageScaleMode.SHOW_ALL;

およびstage.nativeWindow.maximize();

しかし、stage.stageWidthをトレースすると、画面の解像度である1280が得られます。

私は1920年を手に入れたいと思っていました。

6000が返されるため、stage.widthまたはstage.getBounds(stage)を使用できません。アイテムが画面からマスクされているためです。

stage.stageWidthが画面解像度であるため、それを使用して、stage.scaleXを使用して元の解像度を数学的に計算できることを期待していました。ただし、SHOW_ALLがアプリケーション全体をスケーリングしている場合でも、stage.scaleXは1を返します。

1920x1080をアプリケーションにハードコーディングしたいのですが、このコードはさまざまなサイズの複数のアプリケーションで使用されています。そして今、私は困惑しています。

どんな助けでも大歓迎です。

編集:私は「すべて表示」が何をするか知っています、あなたはそれについて私に言う必要はありません。

また、stage.widthとstage.stageWidthが何をするかは知っていますが、stage.stageWidthは、この例では正しくないと思われるものを返しているため、別の方法が必要です。

事後に必要になるので、サイズ変更も役に立ちません。

4

2 に答える 2

7

設定するとき:

stage.scaleMode = StageScaleMode.SHOW_ALL;

ステージのサイズ変更が行われていないため、はからEvent.RESIZEディスパッチされていません。stage

stage.width-は、その上に配置されたすべての表示オブジェクトのサイズを提供するパラメーターです(ステージ上に配置されているすべてのものを1つのMCとして想像してください)。

stage.stageWidth-このパラメータはデフォルトの幅のみを返します(REIZEが発生scaleMode=SHOWALLしていないため、通常は表示されているフラッシュステージサイズが返されます。

画面のサイズを取得したい場合(デバイスの解像度):

Capabilities.screenResolutionX

SHOW_ALLscaleModeのパラメーターは、アプリケーションがフラッシュ表示サイズに拡大することを示します。

画面/フラッシュ表示ステージのサイズを変えたい場合は、NO_SCALEプロパティを使用する必要があります。

幅パラメータのpsには、同じルールが適用されます。

アップデート

いくつかのテストの後、それに対する解決策が見つかりました:

stage.scaleMode = StageScaleMode.NO_SCALE; // reseting the scale to get actual width
ACTUAL_STAGE_WIDTH = stage.stageWidth; // this is where you getting the width you need
stage.scaleMode = StageScaleMode.SHOW_ALL; // setting back the scale.
于 2011-07-11T12:56:01.327 に答える
3

@JevgenijDmitrijevソリューションはちょっとしたハックでした。(違反なし)

公開されたSWFサイズを取得するための本当の答えは、

this.loaderInfo.width;
this.loaderInfo.height;

古いactionscriptフォーラムでそれを見つけましたが、それは私自身が忘れていたものでした。

ASdocでローダー情報を検索すると、詳細な説明が表示されます。

于 2012-02-05T11:29:44.003 に答える