我正在将应用程序从Flex 3迁移到Flex 4。 在某些情况下,会有弹出窗口,其宽度和高度与应用程序的宽度和高度绑定。
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 :(得分:21)
只需创建一个object类型的变量并使其可绑定:
[Bindable]
private var application:Object = FlexGlobals.topLevelApplication;
然后使用变量。
height="{application.height}"
答案 1 :(得分:3)
如果您使用{this.screen.height}
,您的警告就会消失。
添
答案 2 :(得分:2)
这应该适合演员:
height="{(FlexGlobals.topLevelApplication as Application).height - 32}"
它不能使用您当前代码的原因是因为FlexGlobals.topLevelApplication被输入为Object。
答案 3 :(得分:2)
我被困了半个小时,发现Bindable
只适用于首都' B'我做到了,它解决了我的问题。
因此,代替可绑定只需编写Bindable
,因为引用的类是bindable.Bindable
。
答案 4 :(得分:1)
我正在努力解决类似的警告,但是我没有使用VBox来代替对象问题(用[Bindable]前缀解决)。我需要根据我的vbox有多少孩子来更改图像的来源。所以解决这个问题的方法只是使用“这个”lol。这是一个例子:
<mx:Image width="24" height="24" source="{this.vbBox1.getChildren().length>1 ? 'assets/icons/forwardDisable.png':'assets/icons/forward.png'}"/>
如果您不使用“this”,IDE将向您显示类似于您对该对象的警告。我希望它可以帮助别人!
最好的问候
答案 5 :(得分:0)
创建应用程序的可绑定变量类型,即myApp,以获取myApp中定义的所有变量或代码完成:
[Bindable]
private var globals:myApp = FlexGlobals.topLevelApplication as myApp;
然后使用变量。
height="{globals.height}"