1

actionscript3 に基づいてプロジェクトを構築したいと考えています。顧客の Web ブラウザの表示サイズに合わせて、または顧客が Web ブラウザのサイズを変更したときにステージ領域のサイズを変更する必要があります。

固定の縦横比はありませんが、最小サイズ (たとえば 640x480) と最大サイズ (1600x1000) があります。顧客の Web ウィンドウの長さが最小サイズよりも小さい場合、スクロール バーがそのサイズに表示されるため、ユーザーはスクロール バーを使用してステージ全体を見ることができます。顧客の Web ウィンドウのサイズが最大サイズよりも大きい場合、Flash アプリケーションが表示されます。 IE 6 を含むほとんどの Web ブラウザーで動作する必要があります。

ステージのサイズが変わると、ステージ上のコンテンツはスケーリングされません.私の場合、プロジェクトには数十のビューがあり、すべてのビューはサイズの変更を処理し、それらの要素を再配置する必要があります.これは巨大な作業になると思ったので、このようなプロジェクトを構築するための提案が必要です。

4

1 に答える 1

2

まず、サイズ変更は、ActionScriptではなくJavaScript/CSSによって管理されます。とはいえ、この動作に備えるためにActionScriptで実行する必要のあることがいくつかあります。

最初に、SWFのすべてのコンテンツをWebページに合わせて拡大縮小したくないとおっしゃいました。このデフォルトの動作に対抗するにscale modeは、ステージが使用するを変更する必要があります。

stage.scaleMode = StageScaleMode.NO_SCALE;

私が見つけたもう1つのことは、スケーラブルなWebサイトを操作しやすくすることです。これは、SWFの左上隅を0,0に設定することです。デフォルトでは、SWFをスケールアップすると、0,0が同じ場所に残り、「パディング」が新しいサイズを表します。つまり、SWFを200ピクセルずつ拡大し、元々400ピクセルだった場合、0,0は左上隅を表すのではなく、左側から100ピクセルをSWFに落とします。これを修正するためにできることは次のとおりです。

stage.align = StageAlign.TOP_LEFT;

これらの2つのことは、組み込みSWFがより期待どおりに機能するのに役立ち、プロジェクト全体で役立つ可能性があります。

最後に、ステージ/ブラウザウィンドウのサイズ変更に反応する必要のある、画面上に表示可能なオブジェクトが多数あるとおっしゃいました。これは、を使用して処理するのは非常に簡単Event.RESIZEです。にリスナーをアタッチして、stageこのイベントを処理し、変更を反映する表示可能な各オブジェクトに情報を渡すことができます。

handleResize()ビューオブジェクトの基本クラスとなるメソッドを持つクラスを作成できます。

class ViewComponent extends Sprite
{

    public function handleResize(width:int, height:int):void
    {
        trace(width, height);
    }

}

これらの各オブジェクトは、次のように、全体的なビューを管理する別のクラス内にリストできます。

class ViewManager extends Sprite
{

    public var viewComponents:Vector.<ViewComponent>;


    public function ViewManager(stage:Stage)
    {
        viewComponents = new Vector.<ViewComponent>();
        stage.addEventListener(Event.RESIZE, _manageResize);
    }


    private function _manageResize(e:Event):void
    {
        for each(var i:ViewComponent in viewComponents)
        {
            i.handleResize(e.target.stageWidth, e.target.stageHeight);
        }
    }

}

このようにして、をViewComponent内にリストViewManagerし、をオーバーライドすることで、それぞれを独自のクラスで適切に処理できますhandleResize()

于 2012-09-12T04:50:35.960 に答える