2011-11-08 9 views
0

私はステージの高さと幅に応じて、自分自身とコンポーネントの高さと幅を動的に変更するフラッシュアプ​​リケーションを持っています。Flex 4 - Flashアプリケーションに適合するスケール

このアプリケーションは、何もすることができ、画面上だけでは画面の高さと幅を実行しようとしている(テストとアプリケーションが完璧に動作し、画面上にそれにそのコンポーネントと、必要なすべてのオブジェクトを調整)

しばらくこのアプリケーションに、ウィンドウからのフラッシュバーとテキスト情報を与えます。アプリケーションは表示されている固定幅と高さを持つプレビューウィンドウに接続されていますが、固定ウィンドウの幅と高さに合わせて調整します。

私はアプリケーションが画面上で実際に表示される幅と高さを持っています。

実際の幅と高さに応じて上下左右に空白がある場合、アプリケーションの拡大/縮小(プレビューウィンドウに合わせて拡大/縮小できます)

+0

SWFをHTMLページに配置するために使用されるembedタグは、アプリケーションのスケール方法を制御できます。私はあなたがアプリケーションが画面全体を占有し、流動的に自分自身のサイズを変更したいと思っていますか? – gthmb

+0

これを行うには、内側のコンポーネントに、ピクセルではなく幅と高さのパーセンテージを指定する方がよいでしょう。 – Neeraj

+0

このように、サイズ変更があるたびに各内部コンポーネントの高さ/幅を変更する必要はありません。プログラムでは、percentageWidthプロパティとpercentageHeightプロパティを使用して、幅と高さのパーセンテージを変更できます – Neeraj

答えて

0

埋め込みサイズを取得するには、stage.stageWidth/stage.stageHeightを使用する必要があります。 Event.RESIZEイベントを使用して、実行時にステージサイズが変更されたときに処理します。次に、アスペクト比を維持するために単純なスケーリングロジックが必要です。以下のような

何か:

// disables streching 
stage.scaleMode = StageScaleMode.NO_SCALE; 

// listen to stage being resizes 
addEventListener(Event.RESIZED, handleResized); 

// adjust UI to original size 
setSize(stage.stageWidth, stage.stageHeight); 

// handle the resized event, and update your UI's dimension 
function handleResized(evt:Event):void 
{ 
    setSize(stage.stageWidth, stage.stageHeight); 
} 

// updates your UI 
function setSize(wid:int, hgt:int):void 
{ 
    container.width = wid; 
    container.height = hgt; 
} 

は、ステージサイズにアプリをスケールします。アプリケーションのアスペクト比を維持する必要がある場合は、SWFを埋め込む方法を調整するか、またはsetSize関数でアスペクト比ロジックを自分で処理できます。

関連する問題