页游开发中,功能模块的界面可以在Flash CS 中可以进行设计,但要在其中的文档类中进行编码,效率比较低下(设计师用的工具还是没有FlashBuilder这类的IDE编码舒服)。多数情况下程序员更喜欢在FlashBuilder这类的IDE下进行编码调试,但它也不是界面设计的最佳工具。如何将二者的优势结合起来,提高开发效率呢?
先说一下先前的做法和碰到的问题:
Flash CS中的MovieClip可以为ActionScript导出文档类,FlashBuilder中创建ActionScript项目引用Flash输出的swc,可以构造这个文档类的具体实例,形象的说法就是用新建的类作为了文档类的壳。这个过程中FlashBuilder中的类中需要操作MovieClip中的属性对象,所以需要给他们起名字赋值。如果成员对象比较多,这个工作量也是很可观的,而这就是本文要解决的问题。
解决:
先说一下做过的尝试
采用
ObjectUtil.
getClassInfo
方法,这个类不在默认的包内需要额外导入引用包,因为这个不足所以排除。
采用循环遍历MovieClip中的属性,不可行。尝试过程中也补了动态类的相关知识,循环只能取到其中的动态属性,
而这种在类定义中就声明了的不适用。
正题:
实现代码大致如下:
var mc:Test=new Test();// 构造了一个文档类的实例
var xml:XML=describeType(mc);// 得到类的描述xml
for each(var prop:XML in xml.variable)// 遍历xml中的变量属性
{
this[prop.@name]=UI[prop.@name];// 赋值
}
使用条件:
操作文档类的类(FlashBuilder项目中的类)需要声明与文档类中的实例名相同的变量。
额外的好处:
FlashCS 文档类可以只做声明,不需要有具体的文件。
参考文档: