您的位置:首页 > 产品设计 > UI/UE

关于flash builder 4 命名空间问题 【xmlns】

2011-12-01 10:23 417 查看
前两天开始使用flash builder4,可能很多人都跟我一样,拿着flex3的书用flash builder 4敲代码,一敲发现不是没有控件就是各种提示错误,明明是照书上敲的啊……其实就是最开始那一行搞的鬼,别用系统自动生成的设置:

xmlns:fx="http://ns.adobe.com/mxml/2009"

xmlns:mx="library://ns.adobe.com/flex/halo"

xmlns:s="library://ns.adobe.com/flex/spark"

这 三个命名空间是新增的,控件和方法跟原来都不一样了。改成xmlns:mx="http://www.adobe.com/2006/mxml"这一条就 完全能兼容flex3的代码了,再转到设计模式看看,甚至连spark的控件都变成halo的了(就是原来flex builder 3的设计模式),Adobe为flex4写了并行的两个包,原来的MX还能用,但是默认推荐用spark的(功能更强大,但是现在一本书都没有,除了帮助 文档),要用flex3 的书学习的话,只要改命名空间为原来的xmlns:mx="http://www.adobe.com/2006/mxml"就可以完全兼容了,连代码提
示都会出来(像VBox这样的spark删掉的空间也出来啦,可以直接拖拽了)。

前几天,不知道网上哪个不懂装懂的……居然说,要在flash builder 4里面运行flex3的代码要把原有的命名空间改成现在系统生成的那三条,还要加什么编译变量……完全反着来了!!!很不幸,我跟看到宝似的,马上照做, 结果整了两天,各种莫名奇妙的错误出来,连复制粘贴的源代码都运行错误,郁闷死了,大家别在犯同样的错误啊~flash builder 4 本来就兼容flex3 的代码,开关就是那条命名空间声明。

这里还有一篇详细说命名空间 的:http://wonlen.javaeye.com/blog/402467

得了我把它贴过来吧:

众所周知,Flex SDK 4(Gumbo)增加了一些命名空间,请看如下:

xmlns:fx="http://ns.adobe.com/mxml/2009"

xmlns:mx="library://ns.adobe.com/flex/halo"

xmlns:s="library://ns.adobe.com/flex/spark"

1、 xmlns:fx="http://ns.adobe.com/mxml/2009"

定义了顶级的ActionScript 3.0一些顶级的方法、全局函数和全局常量等内容。

例如我们常用的一些数据类型:Number、int、Boolean、Array、 String等。

在《Adobe Flex 4 Beta Language Reference》里面的这个链接中会有详细描述。

关于 这个命名空间的内容,全部定义在Flash Builder安装目录下面的sdks\4.0.0\frameworks\mxml-2009-manifest.xml里面。

2、 xmlns:mx="library://ns.adobe.com/flex/halo"

使用过Flex SDK 2 和 Flex SDK 3的朋友就不会陌生了,这个命名空间(NameSpace)里面的内容是mx.*下面的全部内容,请注意一下,其中halo的名字就是Flex SDK 2 和 Flex SDK 3里面默认的CSS样式。

关于这个命名空间的内容,全部定义在Flash Builder安装目录下面的sdks\4.0.0\frameworks\halo-manifest.xml里面。

3、 xmlns:s="library://ns.adobe.com/flex/spark"

这是Flex SDK 4(Gumbo)里面新增加的组件库。包含了Flex SDK 4(Gumbo)里面全部的spark.* 和 flashx.* packages里面的部分内容(text framework class)

关于这个命名空间的内容,全部定义在Flash Builder安装目录下面的sdks\4.0.0\frameworks\spark-manifest.xml里面。

其中的一些我认 为必要了解的内容:

1、xmlns:mx="library://ns.adobe.com/flex/halo" 和 xmlns:s="library://ns.adobe.com/flex/spark"是平级的,而xmlns:fx="http: //ns.adobe.com/mxml/2009"是ActionScript 3.0顶级的内容。也就是说,如果在某一个Project里面只使用halo的话,则可以在Application里面去掉spark的定义。(反之亦 然)

2、xmlns:mx="library://ns.adobe.com/flex/halo" 和 xmlns:s="library://ns.adobe.com/flex/spark"其中有一部分是公用的,这点请大家注意一下(关于为什么是公用 的,我猜测是为了让Flex SDK 2 和 Flex SDK 3迁移到Flex SDK 4(Gumbo)的过程更方便一些造成的。)

3、 xmlns:fx="http://ns.adobe.com/mxml/2009"保留Flex SDK 2 和 Flex SDK 3时代的一些顶级包以外,还新增加了一些标签, 如:<Declarations>、<DesignLayer><Library><Private><Reparent>

4、 当需要定义一个在xmlns:mx="library://ns.adobe.com/flex/halo" 和 xmlns:s="library://ns.adobe.com/flex/spark"都存在的组件或者意义相同的组件,Adobe建议使用 spark,而不是原来的halo。

PS:本篇文章部分内容来自Using ADOBE® FLEX® 4 和 ADOBE FLEX Gumbo Preview Release Features and Migration Guide 这两篇Adobe的文档。
PS:本文转自——http://hi.baidu.com/flexok/blog/item/f314c01415cfac0c203f2e61.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: