Apache flex 如何扩展ObjectProxy类

Apache flex 如何扩展ObjectProxy类,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我试图扩展ObjectProxy类,原因是我想有一个ObjectProxy类的单例,所以我做了如下 package utils { import mx.utils.ObjectProxy; public class UniformObjectProxy extends ObjectProxy { private static var _instance:UniformObjectProxy; public function Unifor

我试图扩展ObjectProxy类,原因是我想有一个ObjectProxy类的单例,所以我做了如下

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(){

    }
}
当我创建简单对象的对象统一时,我将其传递给我的UniformObjectProxy.getInstance()静态方法以获取我的objectProxy的实例,到目前为止还不错

我的问题是当我尝试绑定objectProxy实例的属性时,比如

_opc = UniformObjectProxy.getInstance(_uniform);
cw:ChangeWatcher = BindingUtils.bindSetter(dispatchColorChange, _opc, data.id);
dispatchColorChange处理程序函数只被调用一次,我已经检查了ChangeWatcher.isWatching()并返回false,这意味着如果我创建一个类似

_opc = new ObjectProxy(_uniform);
cw:ChangeWatcher = BindingUtils.bindSetter(dispatchColorChange, _opc, data.id);

绑定工作得很好,所以我的想法是,当我扩展objectProxy类时,如何正确地实现这一点,请帮助我!,谢谢你提供任何线索

扩展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);

扩展ObjectProxy似乎有问题(就我个人而言,我在尝试重写setProperty方法时遇到了名称空间问题,我觉得这个类的使用方式与代理类不同)

这不是对你问题的直接回答,但我想你不应该仅仅为了它而坚持单身模式。要获得上述相同的访问/结果,我建议执行以下操作:

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);

这不是我问题的答案,但这很好,谢谢你给我指出了正确的方向,这很有效,谢谢!!!!这不是我问题的答案,但这很好,谢谢你给我指出了正确的方向,这很有效,谢谢!!!!