1

私は次のActionScriptを持っています:

package {
    import flash.display.Sprite;

    public class Application extends Sprite {
        public function Application(){
            width=1000;
            height=500;
        }
    }
}

でコンパイルしmxmlc Application.asます。私が気付いたのは、ステージの幅と高さが変わらないため、アプリケーションは私が思っていたようなステージオブジェクトではないということです。

どうやってステージにアクセスしますApplicationか?

4

1 に答える 1

1

「ステージ」の意味を微妙に誤解しています。ステージは、Flash が動作する必要がある表示領域への最下位レベルの参照であるため、そのサイズは、Flash が実行されているコンテナによって最終的に決定されます。

したがって、スタンドアロンの Flash プレーヤーでコンテンツを表示する場合、ステージのサイズを変更するには、プレーヤー自体のサイズを変更します。また、HTML ページに埋め込まれたコンテンツを表示する場合、Flash が埋め込まれている要素のサイズがブラウザーによって変更された場合にのみ、ステージのサイズが変更されます。に(たとえば、Javascript を介して)。同様に、フラッシュが .NET アプリケーションに埋め込まれている場合、.NET ロジックはステージのサイズなどを制御します。

これらの理由から、コンテナーがそれを行う方法を公開しない限り、アプリケーション ロジック内からステージのサイズを変更することは一般的に不可能です。実際、ほとんどのブラウザーは JavaScript を介してそのような機能を公開しているため、ブラウザーでは通常、JS フックを呼び出して Flash の埋め込み要素のサイズを変更することにより、ステージのサイズを変更できます。対照的に、スタンドアロン プレーヤーはそのようなフックを公開しないため、ステージのサイズを変更することはできません (もちろん、フルスクリーンに切り替えることはできます)。

補足として、Joel Hooks が指摘しているように、次の形式のステートメントをプロジェクトに含めることができます[SWF(width=1000,height=500)]。これにより、コンパイルされた SWF に指定されたサイズのメタデータが含まれます。ただし、そのメタデータは単なる提案であり、それを尊重するかどうかは完全にコンテナー次第です。スタンドアロン プレーヤーはそのようなメタデータ (初期コンテナー サイズ) を尊重しますが、ブラウザーはそれを完全に無視します。

于 2009-08-25T06:28:04.987 に答える