我指的是这个网站link text
使用错误的事件名称 [Bindable]标签可能会导致你的 申请不绑定您的财产, 你甚至都不知道为什么。什么时候 你使用[Bindable]标签 自定义名称,下面的示例看起来 好像一个好主意:
public static const EVENT_CHANGED_CONST:String = "eventChangedConst";
private var _number:Number = 0;
[Bindable(event=EVENT_CHANGED_CONST)]
public function get number():Number
{
return _number;
}
public function set number(value:Number) : void
{
_number = value;
dispatchEvent(new Event(EVENT_CHANGED_CONST));
}
上面的代码指定一个静态 属性到事件名称,然后 使用相同的分配来分派 事件。但是,当值 更改,绑定不会出现 上班。原因是这个事件 名称将是EVENT_CHANGED_CONST和 不是变量的值。
代码应该写成 如下:
public static const EVENT_CHANGED_CONST:String = "eventChangedConst";
private var _number:Number = 0;
[Bindable(event="eventChangedConst")]
public function get number():Number
{
return _number;
}
public function set number(value:Number) : void
{
_number = value;
dispatchEvent(new Event(EVENT_CHANGED_CONST));
}
我同意,错误的例子确实看起来像个好主意,我会这样做,因为我认为这是正确的方法,并避免输入错误的可能性。为什么使用常量的名称而不是它的值?当然这不可能是对的吗?
感谢您的见解
答案 0 :(得分:4)
因为标准的Flex编译器有时并不聪明......我感到很痛苦!我已经多次抱怨这个确切的问题了。
如果我没记错的话,那是因为编译器会进行多次传递。其中一个早期传递将元数据更改为AS代码。此时在编译器中它还没有解析剩余的AS代码,因此它无法解析常量或对其他文件中的静态变量的引用。
我唯一可以建议的是注册Adobe JIRA,对错误进行投票,并希望4.5中的编译器修复带来一些缓解。