达到的效果
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
minWidth="955"
minHeight="600"
xmlns:jx="http://jx.founder.com/2010/flex">
<mx:Script>
<![CDATA[
import jx.components.MyCheckBox;
private function init():void {
var c:MyCheckBox;
}
]]>
</mx:Script>
<jx:MyButton/>
</mx:Application>
MyButton是我自定义的一个组件。当我以mxml标签方式使用该组件时,flashBuilder会自动帮我引入命名空间并给出前缀(xmlns:jx="http://jx.founder.com/2010/flex")。
第一步,创建库项目
没什么好说的。
第二步,创建一个名为MyButton的自定义组件,代码如下:
package jx.components {
import mx.controls.Button;
[IconFile("MyButton.png")]
public class MyButton extends Button {
public function MyButton() {
super();
this.label = "测试";
}
}
}
第三步,src目录下创建一个xml,取名为jx-manifest.xml。
<?xml version="1.0" encoding="UTF-8"?> <componentPackage> <component id="MyButton" class="jx.components.MyButton"/> </componentPackage>
这是一个清单文件。它的作用像一个对照表,它把组件名和它实际的类全名对应起来。
这里的id属性指定是的就是组件名。组件名可以与类名完全没有关系,比如你可以把MyButton换成TestBtn。TestBtn相当于给jx.components.MyButton起了个别名,以后在程序中就可以使用TestBtn来引用该类了。
第四步,创建xml,名为design.xml,放在src目录下。该文件内容如下:
<?xml version="1.0" encoding="utf8"?> <design version="2"> <namespaces> <namespace prefix="jx" uri="http://jx.founder.com/2010/flex"/> </namespaces> <categories> <category id="myControls" label="我的组件" defaultExpand="true"/> </categories> <components> <component id="jx.components.MyButton" name="jx.components.MyButton" namespace="jx" category="myControls"> </component> </components> </design>
design.xml是一个设计辅助文件。flashbuilder通过它实现,为标签指定默认前缀,为组件分类等功能。
<category id="myControls" label="我的组件" defaultExpand="true"/>这句,定义设计视图组件面板文件夹分类,label指定在组件面板里的文件夹显示名称,如下图所示:
在库项目属性面板里找到资源选项卡,把刚才的两个xml文件勾选上。
最终的文件结构如下图:
第五步 配置项目属性
指定命名空间Namespace URI
指定清单文件Manifest file
如图
至此,标准库项目创建完成。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" xmlns:jx="http://jx.founder.com/2010/flex"> <mx:Script> <![CDATA[ import jx.components.MyCheckBox; private function init():void { var c:MyCheckBox; } ]]> </mx:Script> <jx:MyButton/> </mx:Application>
特别注意:
一、在实践中发现一个缺点:通过上述方式创建库项目后,在使用时,那些通过清单文件定义的组件可以在编写mxml正确提示(如:MyButton),但MyCheckBox由于没有在清单文件中描述,在写mxml标签时就不会自动提示了。但代码方式是可以引用到的。因此,应该将可以用标签方式定义的组件都配置在清单文件中。
二、两个xml配置文件,如果能使用ant自动生成,效果可以会更好。限于能力,就不实现了。
源码:mylib.zip
RIAMeeting-苏州FLEX(34558988) matt 给予了很大的帮助,在此表示感谢 。