前几天跟一位网友争论起“到底是用组件好还是用类好”的问题,那位网友坚持说“用组件好”,而我认为“还是用类好”,双方各执一词,谁也没说服谁。
其实我说的“还是用类好”指的是class文件结合MC。
我们在开发组件的时候,通常要给某个MC绑定一个AS2.0的class文件,然后经过一系列的操作封装成SWC(好长时间不写组件,封装的过程都有些模糊了),这个过程还是比较复杂的。组件封装好后,如果在使用过程中发现问题,又要重复这一系列的过程。而用class文件结合MC则没有这么麻烦,发现问题的时候,我们所做的只是改一下代码。
使用组件真的能方便设计者与开发者之间沟通吗?我看未必。如果设计者觉得组件不合适的时候,那修改组件的外观就少不了开发者的参与,因为组件外观的修改最好是有源文件,这对于开发者而言是一件痛苦的事,如果使用的组件不是开发者自己写的而象FLASH自带的V2组件一样很难得到源文件的话,那对于开发者将是一件更痛苦的事情。
而利用class文件结合MC呢?设计者只要打开MC改就是了。代码?那是开发者应该关心的事情。
这就是我为什么说“还是用类好”的原因。
组件还有如下缺点:
1、 没有继承性,类有。
2、 体积大。组件开发者为了推广组件的使用,通常会把组件做的很漂亮,组件漂亮的同时体积也大了起来,我们所有的人当然都希望最后的文件越小越好。并且,有时候再漂亮的组件跟我们的程序也会格格不入。有时候为了缩小体积,我宁愿自己画一个长方形的MC作为按钮,也不愿用FLASH自带的Button组件,它们之间的体积比是多少?是25K:120个字节!
3、 垃圾代码:我们总是想方设法把代码一再精减,但如果用别人封装好的组件的话,组件中的许多代码便成了无用的代码,这些无用的代码于我们的程序而言就是垃圾代码,虽然它们没有被利用,但它们不一定不在消耗你的资源。
4、 效率:你是喜欢用conFirmBtn.addEventListener("click", confirm)还是喜欢用conFirmBtn.onRelease=function(){}?如果你的机器配置并不很高的话,你会明显感觉到后者比前者响应时要快许多。
5、 BUG与冲突:组件并不是十全十美的,就象V2组件一样。组件一旦出现BUG,于普通的使用者而言将是一件比较麻烦的问题,因为组件的源文件通常不在使用者手中。别人写的组件的响应事件有时会与自己写的代码中的响应事件发生冲突,当这种情况发生时,通常会很让人感到莫明其妙却不知道问题出在哪里。
组件——只有组件开发者用的最明白。
类——只要能看懂代码的人都能用得明白。