flex 组件破解方法

现在flex在开发中用的越来越多,而Flex的组件也有很多,比如ilog提供的各种图形组件,还有amcharts提供的chart组件等。但是他们都是收费的,会在自己的组件上加上一个水印标签。

找不到key的情下如何破解?可不可以从纯编码的方法解决?

这里关键问题是在于去掉水印。flex组件的中水印可想而知也是一个DisplayObject实例,因为所有显示出来的对象类型都是继承了 DisplayObject。如何去掉这个对象有下面几种方法:1.得到这个对象,然后remove;2.得到这个对象修改它的属性让他为透明的,或大小为0,或隐藏;3.在对象渲染之前就将它设为空。这几种方法的前提都是要获得对这个对象的引用。有可能这个对象是私有的或是受保护的,这种情况我们是没法获它的引用的。但是我们可以用重写组件的方式来解决。只要调试出来那个对象是在哪个类里加载(或创建)的,我们就可以得写这个方法,让子类不加载,或不创建,如可是保护类型那就更幸运,我们可以获得引用并修改它的属性。

查找水印对象和查找加载方法是一个很烦锁的工作,要在运行时进行调试,在FB中查看组件中的一个个的属性和方法,对可疑的属性和方法进行测试性的修改,最终就会成功。

下面举个例子(flex-amcharts),进行调试:
新建一个自己的组件,继承了三方提供的组件。加上一个公共方法onClick(),里面设断点;

 

在app里使用新的组件;

flex 组件破解方法_第1张图片


可以在app里加上一个click事件,在事件里调用这个组件里的onClick()。这样就可以进行调试了。查看里面的chart组件。

调用;

 

查看断点;

 

 

找到可疑对象;

flex 组件破解方法_第2张图片

 

 

修改对象属性,这里修改了透明度和大小,这里的createChildren也是要查找的,只有在这里修改属性才能生效;

flex 组件破解方法_第3张图片

 

破解成功。

 

 

 

转载:http://yinxvxv.iteye.com/blog/580785

你可能感兴趣的:(Flex)