现在flex在开发中用的越来越多,而Flex的组件也有很多,比如ilog提供的各种图形组件,还有amcharts提供的chart组件等。但是他们都是收费的,会在自己的组件上加上一个水印标签。
找不到key的情下如何破解?可不可以从纯编码的方法解决?
这里关键问题是在于去掉水印。flex组件的中水印可想而知也是一个DisplayObject实例,因为所有显示出来的对象类型都是继承了 DisplayObject。如何去掉这个对象有下面几种方法:1.得到这个对象,然后remove;2.得到这个对象修改它的属性让他为透明的,或大小为0,或隐藏;3.在对象渲染之前就将它设为空。这几种方法的前提都是要获得对这个对象的引用。有可能这个对象是私有的或是受保护的,这种情况我们是没法获它的引用的。但是我们可以用重写组件的方式来解决。只要调试出来那个对象是在哪个类里加载(或创建)的,我们就可以得写这个方法,让子类不加载,或不创建,如可是保护类型那就更幸运,我们可以获得引用并修改它的属性。
查找水印对象和查找加载方法是一个很烦锁的工作,要在运行时进行调试,在FB中查看组件中的一个个的属性和方法,对可疑的属性和方法进行测试性的修改,最终就会成功。
下面举个例子(flex-amcharts),进行调试:
新建一个自己的组件,继承了三方提供的组件。加上一个公共方法onClick(),里面设断点;
在app里使用新的组件;