3

Flash アプリケーション (AS3) では、ステージ サイズを取得してそれを使用し、オブジェクト (ユーザーが制御する) が画面の外に出ないようにしたいと考えています。ただし、使用する場合:

stage.stageWidth;
stage.stageHeight;

私が得る値は、実際には私が望むものではありません。ステージのサイズが表示されますが、ウィンドウのサイズを変更すると、数値も変化します。さて、htmlページでは、ユーザーがサイズを変更できないため、それは問題ではないと思います...ただし、ウィンドウサイズに依存するよりもしっかりしたものにしたいと思います。私も使用しようとしました:

stage.width;
stage.height;

しかし、それらは「801」と「601」で、実際のステージサイズよりも 1 つ大きくなりました。ウィンドウのサイズを変更しても、これらの値は変わりませんでしたが、1 つ大きくなりました。

私の質問は、ウィンドウのサイズを常に 800 x 600 に変更するにもかかわらず、どうすればステージ サイズを取得できますか? (そしておそらく、その質問には「801 と 601 が表示されるのはなぜですか?」と「ウィンドウのサイズ変更を止めることはできますか?」という質問が隠されています)。ありがとうございました!

4

1 に答える 1

9

まずは違いを知ることが大事stage.stageHeight - stage.stageWidth and stage.height - stage.width

stage.stageHeight // The real height of the stage
stage.height // The height of the content on the stage

したがって、801 と 601 を取得する理由は、ステージ上のコンテンツ全体の高さと幅が 801 x 601 であるためです。

さて、リサイズの問題です。これを Web ブラウザーで表示している場合は、ムービーの高さと幅を設定できます。100% と 100% ではなく、800 と 600 に設定します。これで、ユーザーがブラウザ ウィンドウのサイズを変更しても、ムービーは常に同じサイズのままになります。

HTML マークアップで height="100%" と width="100%" を許可したい場合は、いくつかのオプションがあります。

  1. 疑似ステージとして機能する MovieClip を作成します。800 x 600 になります。ステージに何かを追加する代わりに、この MovieClip に追加します (たとえば、myStage と呼びます)。ここで、オブジェクトをステージ内に保持するためのすべてのロジックが、代わりに myStage MovieClip に適用されます。

  2. AS3 コードに定数を入れることができます。例えば:


 public const STAGE_WIDTH:int = 800;
 public const STAGE_HEIGHT:int = 600;

これで、stage.stageHeight と stage.stageWidth の値ではなく、これらの値を使用するだけです。もちろん、あなたも必ず含める必要があります

stage.align = StageAlign.TOP_LEFT;  // or StageAlign.TOP
stage.scaleMode = StageScaleMode.NO_SCALE;
于 2011-01-20T23:59:44.907 に答える