まず、サイズ変更は、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()
。