FlexBuilder的组件预览机制研究心得

大家都知道开发Flex的组件的一种方式是让组件类继承于UIComponent,但UIComponent的功能太强,什么功能都加到这个UIComponent上了,让开发者一点选择余地都没有(特别是对于一些互联网应用来说,很多功能不一定用得上),导致整个应用体积较大(体积较大主要是相对于直接使用Flash而言)。虽然我知道Flex适合于企业应用,但用Flash来开发一些与后台服务有交互的互联网应用时总是不大方便。

用一些开源的AS3组件倒可以做到体积小,但却无法在Flex中可视化开发。如果可以按照自己的需要来实现一些可视化的组件,那应该会比较好。

然后研究了UIComponent,UIMovieClip,耗费了N多精力,考验了N次人品,终于有所发现(具体过程不说了,比较痛苦)。原以为只要组件实现了IUIComponent就可以预览了,结果不是,里面碰到很多奇怪的问题。

主要实现思路如下:
1、首先要为开发的组件单独建一个Flex Library Project,否则在Flex Project中无法预览;

2、自定义mx.core.UIComponent或mx.flash.UIMovieClip类,让这两个自定义类实现IDeferredInstantiationUIComponent接口,这样做是为了让生成的swf能够使用在mxml中定义的自定义组件,作为实验我只实现了IDeferredInstantiationUIComponent接口(当然也可以使用官方的UIMovieClip实现,不过这个类没有源码,可以反编译使用了UIMovieClip的swf得到);

3、然后让自定义组件继承于刚才实现的UIComponent或UIMovieClip(如果把这两个类改成其他名字,好像也预览不了,真是让人郁闷,难道FlexBuilder还不是面向接口编程);

实现主要包括以下文件,详情见附件:
mx.flash.UIMovieClip,没有使用官方实现的UIMovieClip,自己实现便于搞懂运行机制
org.eleven97.fcl.core.FlexibleComponent,主要是避免直接使用UIComponent或UIMovieClip
org.eleven97.fcl.controls.Rect:自定义组件Rect

到此一个在FlexBuilder可以显示的Rect已经开发完成。但可惜遇到太多离奇的问题,无法继续深入下去。
比如在FlexibleComponent中如果直接使用了_initialized,Rect就无法显示了;或者有时候覆盖了一些protected方法(不影响显示的方式)也无法显示了。

希望Flexer们能对可视化的Flex组件感兴趣,并且一起来探讨这些问题。

文笔不好,希望大家谅解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值