2011-01-13 10 views
0

私は自分のアプリケーションの背景として1つのswfを設定する1つのアプリケーションを作成しています。
私は背景を設定することができますが、それはいくつかの領域だけで来ています。
アプリケーション全体には含まれていません。
アプリケーションのバックグラウンド全体ではスケーリングされません。

私はその背景SWFで9スライススケーリングを使用しています。
SWFオブジェクトをFlex 4アプリケーションのバックグラウンドに設定する方法

あなたはどのように、どこに背景を追加し、私たちに語っていないが、このような何かが動作するはず....

答えて

0

概要:トンを達成するために彼のフレックス4アプリケーションでカスタムアプリケーションスキンを作成し、contentGroupグループの背後にあるDisplayObjectとして使用する.swfを追加する必要があります。

実装:

は、例えば、SWFBackgroundSkin.mxmlを新しいスキンを作成し、皮膚がスパークApplicationクラスと互換性のあるホストコンポーネントを持つように設定されていることを確認します

<fx:Metadata> 
    [HostComponent("spark.components.SkinnableContainer")] 
</fx:Metadata> 

次SWFLoaderを最初にという可視要素(つまり、contentGroupの後ろ)として追加します。これは、背景として機能します:

<mx:SWFLoader source="background.swf"/> 
... 
<s:Group id="contentGroup" ... /> 
012 SWFBackgroundSkin.mxmlは skinsパッケージ(フォルダ)内にあると仮定

<s:Application ... skinClass="skins.SWFBackgroundSkin"> 

最後に、メインアプリケーションでは、skinClassを設定します。

注:最初に、デフォルトのアプリケーションスキンspark.skins.spark.ApplicationSkinを調べることができます。新しいスキンをデフォルトのスキンから作成する場合は、<s:Rect id="background" ... >を削除するか、少なくともSWFLoaderをその前面に配置してください。

+0

助けてくれてありがとう。しかし、まだそれは完全な領域に来ていません。ロードされたswf領域のサイズになるだけです。サンプルアプリケーションを私にくれますか? –

+0

私は答えを簡略化しました。スケーリングに関しては、width = "100%height =" 100% "scaleContent =" true "'をSWFLoaderに追加すると、フルステージにスケールされます。 – merv

+0

@Mitul Golakiya - 作業? – merv

1

を助けてください:スケーリングのために

stage.addChildAt (background, 0); 

、追加Event.RESIZEに反応するのステージにイベントリスナー:

stage.addEventListener (Event.RESIZE, function() : void { 
    background.width = stage.stageWidth; 
    background.height = stage.stageHeight; 
}); 
+0

私は、AIRのwindowApplicationクラスのcreationCompleteハンドラにイベントハンドラを配置しているとき、stageクラスのnullオブジェクトのプロパティにアクセスできないというエラーを出しています。 –

+1

代わりにapplicationCompleteハンドラを使用します。creationCompleteは、オブジェクトが実際にステージに表示される前に起動されます。 – weltraumpirat

関連する問題