2010-12-21 19 views
11

我正在將應用程序從Flex 3遷移到Flex 4. 在某些情況下,會出現彈出窗口,其寬度和高度綁定到應用程序的寬度和高度。數據綁定將無法檢測到對「topLevelApplication」的分配

width="{Application.application.width - 24}" 
height="{Application.application.height - 32}" 

Application.application已在4.0中棄用。所以我曾與

width="{FlexGlobals.topLevelApplication.width - 24}" 
height="{FlexGlobals.topLevelApplication.height - 32}" 

取代這個現在,編譯器給出了警告,數據綁定不能topLevelApplication中被檢測到。

數據綁定將無法 檢測分配到 「topLevelApplication中」

我的問題是:是否有另一種(綁定)財產的地方,我可以用得到的功能之前相同?

+0

是否有你需要它可以綁定的原因?我不認爲topLevelApplication的高度和寬度值會發生變化,除非swf或瀏覽器被調整大小,否則所有的控件都會重新繪製(除非我錯了)。 – 2010-12-21 21:36:39

回答

21

只需創建對象類型的變量,並使其可綁定:

[Bindable] 
private var application:Object = FlexGlobals.topLevelApplication; 

然後使用該變量。

height="{application.height}" 
2

這應該與科協工作:

height="{(FlexGlobals.topLevelApplication as Application).height - 32}" 

爲什麼它沒有與當前的代碼工作的原因是因爲FlexGlobals.topLevelApplication的類型爲對象。

+0

嗨,詹姆斯,我已經嘗試過,但仍然收到警告。任何其他選項?謝謝。 – Bocaxica 2010-12-21 14:56:25

+0

Flex 4.0或4.1? – 2010-12-21 18:07:28

2

我被困了半個多小時,結果發現,Bindable只能用大寫「B」的作品,我做到了,它解決了我的問題。

因此,作爲所提及的類是bindable.Bindable,而不是可綁定的僅寫Bindable

1

我一直在努力與類似的警告,而不是一個對象問題(這是用[Bindable]前綴解決)我使用VBox。我需要根據我的盒子有多少個孩子來更改圖像的來源。所以解決這個問題只是使用「這個」哈哈。這裏有一個例子:

<mx:Image width="24" height="24" source="{this.vbBox1.getChildren().length>1 ? 'assets/icons/forwardDisable.png':'assets/icons/forward.png'}"/> 

如果你不使用「本」的IDE會顯示一個警告類似於你有對象的人。我希望它可以幫助別人!

問候

3

如果使用{this.screen.height}你的警告應該消失。

Tim

相關問題