我的ActionScript类中有一个可绑定的公共属性,我想访问由[Bindable]标记生成的私有var。
例如,如果我声明:
[Bindable] public var yummyTime:String = "abcdefghij";
在运行时,它将值存储在名为_719695190yummyTime
的变量中。有谁知道我怎么能预测这个名字?
答案 0 :(得分:1)
即使你可以预测这个名字;您将无法在编译时访问它,因为您将获得未定义变量的编译器错误。你为什么需要访问它?
我怀疑无论你想做什么都可以通过将公共变量定义扩展为定义了Bindable事件的get / set方法来实现。像这样:
private var _yummyTime : String = 'abcdefghij'
[Bindable(event='yummyTimeChanged']
public function get yummyTime():String{
return _yummyTime;
}
public function set yummyTime(value:String):void{
_yummyTime = value;
dispatchEvent(new Event('yummyTimeChanged'));
}
然后在组件内部,您将拥有私有变量_yummyTime和公共变量yummyTime。
答案 1 :(得分:0)
此:
[Bindable] public var yummyTime:String;
与写作相同:
private var _yummyTime:String;
[Bindable]
public function get yummyTime():String
{
return _yummyTime;
}
public function set yummyTime(value:String):void
{
_yummyTime = value;
}
在第二段代码中,你已经明确地写出了私有变量的getter和setter。
另请注意,[Bindable]标签在setter函数中添加了特殊检查,如下所示:
private var _yummyTime:String;
[Bindable(event="yummyTimeChange")]
public function get yummyTime():String
{
return _yummyTime;
}
public function set yummyTime(value:String):void
{
if( _yummyTime !== value)
{
_yummyTime = value;
dispatchEvent(new Event("yummyTimeChange"));
}
}
如果你不想检查 if(_yummyTime!== value),你可以在[Bindable]标签中添加一个自定义事件名称,就像我给出的最后一个例子一样不写出支票。