我试图扩展ObjectProxy类,原因是因为我想拥有一个ObjectProxy类的Singleton,所以我做了类似的事情
package utils
{
import mx.utils.ObjectProxy;
public class UniformObjectProxy extends ObjectProxy
{
private static var _instance:UniformObjectProxy;
public function UniformObjectProxy(secure:PrivateClass, item:Object=null, uid:String=null, proxyDepth:int=-1)
{
super(item, uid, proxyDepth);
}
public static function getInstance(item:Object=null):UniformObjectProxy{
if(UniformObjectProxy._instance == null){
var security:PrivateClass = new PrivateClass();
UniformObjectProxy._instance = new UniformObjectProxy(security, item);
}
return UniformObjectProxy._instance;
}
}
}
class PrivateClass{
public function PrivateClass(){
}
}
当我创建我的对象uniform这是一个简单的对象时,我将它传递给我的UniformObjectProxy.getInstance()静态方法来获取我的objectProxy的实例,好了到目前为止好了
我的问题是当我尝试绑定objectProxy实例的属性时,如
_opc = UniformObjectProxy.getInstance(_uniform);
cw:ChangeWatcher = BindingUtils.bindSetter(dispatchColorChange, _opc, data.id);
dispatchColorChange处理函数只调用一次,我再次检查ChangeWatcher.isWatching()并返回false意味着我的objectProxy没有正确绑定,如果我创建了一个像objectProxy
_opc = new ObjectProxy(_uniform);
cw:ChangeWatcher = BindingUtils.bindSetter(dispatchColorChange, _opc, data.id);
绑定工作得很好,所以我的想法是问题是当我扩展objectProxy类时,如何正确地做到这一点,请帮助我!,谢谢你的任何线索!!
答案 0 :(得分:1)
扩展ObjectProxy似乎有问题(我个人在尝试覆盖setProperty方法时遇到了命名空间问题,并且觉得这个类并不意味着使用与Proxy类相同的方式)。
不是你问题的直接答案,但我想你不应该只是为了它而坚持单身模式。为了获得上述相同的访问/结果,我建议做这样的事情:
package utils
{
import mx.utils.ObjectProxy;
public class UniformObjectProxy
{
private static var _proxy:ObjectProxy;
public function UniformObjectProxy()
{
throw("do not instantiate me!")
}
public static function getProxy(item:Object=null):ObjectProxy{
if(_proxy == null){
_proxy = new ObjectProxy(item);
}
return _proxy;
}
}
}
然后:
var _opc:ObjectProxy = UniformObjectProxy.getProxy(_uniform);