问题解决,见下图
问题
我在 Flex Builder 3 中工作,我有两个 ActionScript 3 类 (ABC
和XYZ
) 和一个 Flex MXML 项目 ( main.mxml
)。我有一个 的实例XYZ
作为 的属性ABC
,并且我希望的属性在 Flex 项目中的文本控件中XYZ
可见( )。[Bindable]
不幸的是,只有在它们发生变化时才会更新prop3
。prop4
我已经进入调试器以确保prop1
并进行prop2
更改,但它们没有在文本控件中更新。
这是代码:
ABC.as
[Bindable]
public class ABC extends UIComponent {
/* Other properties */
public var xyz:XYZ = new XYZ();
/* Methods that update xyz */
}
XYZ.as
[Bindable]
public class XYZ extends Object {
private var _prop1:uint = 0;
private var _prop2:uint = 0;
private var _prop3:uint = 0;
private var _prop4:uint = 1;
public function get prop1():uint {
return _prop1;
}
public function set prop1(value:uint):void {
_prop1 = value;
}
/* getters and setters for prop2, prop3, and prop4 */
}
主.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:com="com.*" />
<com:ABC id="abc" />
<mx:Text text="{abc.xyz.prop1}" />
<mx:Text text="{abc.xyz.prop2}" />
<mx:Text text="{abc.xyz.prop3}" />
<mx:Text text="{abc.xyz.prop4}" />
</mx:Application>
回答
从我发布的小代码片段中看不出来,但从内部XYZ
我正在更新_prop3
和_prop4
使用他们的设置器。相反,我更新_prop1
并_prop2
通过他们的私有变量,而不是他们的设置器。因此,属性 1 和 2 没有调度更新事件。