apache-flex 数据系结将无法侦测对“topLevelApplication”的指派

3phpmpom  于 2022-11-01  发布在  Apache
关注(0)|答案(6)|浏览(129)

我正在将一个应用程序从Flex 3迁移到Flex 4。在某些情况下,弹出窗口的宽度和高度与应用程序的宽度和高度绑定在一起。

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

Application。4.0中不赞成使用application,因此我将其替换为

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

现在,编译器会发出警告,指出无法侦测到topLevelApplication的数据系结。
数据系结将无法侦测对“topLevelApplication”的指派
我的问题是:是否有其他(可绑定的)属性可用于获得与之前相同的功能?

jw5wzhpr

jw5wzhpr1#

只需创建一个object类型的变量并使其可绑定:

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

然后使用变量。

height="{application.height}"
edqdpe6u

edqdpe6u2#

如果您使用{this.screen.height},您的警告应该会消失。
蒂姆

bmp9r5qi

bmp9r5qi3#

这应该适用于转换:

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

它不能处理当前代码的原因是FlexGlobals.topLevelApplication的类型为Object。

yvfmudvl

yvfmudvl4#

我被困了半个小时,发现Bindable只适用于大写的“b”,我做到了,它解决了我的问题。
因此,只要写Bindable而不是bindable,因为引用的类是bindable.Bindable

eyh26e7m

eyh26e7m5#

我也遇到过类似的警告,但我用的不是对象问题(用[Bindable]前缀就能解决),而是一个VBox。我需要根据我的vbox有多少个子对象来改变图片的来源。所以解决这个问题的方法就是用“this”,哈哈。下面是一个例子:

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

如果不使用“this”,IDE将显示一个警告,该警告类似于对象的警告。我希望它对其他人有所帮助!
此致

f8rj6qna

f8rj6qna6#

创建应用程序的可绑定变量类型(例如myApp),以获取myApp或代码完成中定义的所有变量:

[Bindable]
private var globals:myApp = FlexGlobals.topLevelApplication as myApp;

然后使用变量。

height="{globals.height}"

相关问题