Flex Namespace的用法

《Flex第一步》官方群里面有个朋友问我,如何像xmlns:mx="http://www.adobe.com/2006/mxml"这样的方式,自定义自己组件的namespace呢?去Adobe那边的compiler参数查找了一下,发现可以利用-namespace、-include-namespaces这两个参数来指定自己的URL。

首先需要明确的一个概念:manifest.xml
Adobe的一种ActionScript 3.0类库清单,通过manifest.xml与namespace的配合,可以很容易设定自己的namespace。

下面就是一个manifest.xml文件:(注意:这个文件是需要自己创建的,同时必须要放Flex Library Project的根目录下面)
<?xml version="1.0"?>
<componentPackage>
<component id="TestingA" class="TestingA"/>
</componentPackage>
这个xml文件中定义了一个id="TestingA"的class(注意:如果这个class是在包中的,则也要把包地址写上,例如:cn.org.kenshin.TestingA)

然后使用如下的参数:
-namespace http://www.k-zone.cn manifest.xml
-namespace:声明一个URI作为http://www.k-zone.cn的namespace,同时使用manifest.xml作为当前的ActionScript 3.0清单文件。
-include-namespaces http://www.k-zone.cn
-include-namespaces:在Library(swc)中包含http://www.k-zone.cn这个namespace。

当然,如果当前的编译环境是Flex Builder(Flash Builder),那么上述内容将变得更加的简单。

在需要使用这个Library的地方,将这个Library复制到lib文件夹中,然后在想要使用的地方使用如下的语句:
xmlns:zone="http://www.k-zone.cn"
最后,其请看下图所示:

现在有一个疑问,我们通过指定namespace和manifest.xml的方式生成的swc到底与未指定的swc有什么差别呢?我们可以使用解压缩软件打开swc,会得到如下的两个文件:
catalog.xml
library.swf

而catalog.xml里面的内容如下:

<?xml version="1.0" encoding ="utf-8"?>

<swc xmlns="http://www.adobe.com/flash/swccatalog/9">

<versions>

<swc version="1.2" />

<flex version="3.2.0" build="3958" />

</versions>

<features>

<feature-script-deps />

<feature-components />

<feature-files />

</features>

<components>

<component className="TestingA" name="TestingA" uri="http://www.k-zone.cn"  />

</components>

<libraries>

<library path="library.swf">

<script name="TestingA" mod="1244462205848" signatureChecksum="3185651073" >

<def id="TestingA" />

<dep id="Object" type="i" />

<dep id="AS3" type="n" />

</script>

<digests>

<digest type="SHA-256" signed="false" value="4a231e9ab1783d1d4aa7effa1a0b106be499727a2bb5a6c9b3e7a7fec108a413"   />

</digests>

</library>

</libraries>

<files>

</files>

</swc>
请注意一下红色粗体字部分,这个部分就是我们之前指定的namespace。

(0)

相关推荐

  • PHP命名空间(namespace)的使用基础及示例

    PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的. 一. PHP的命名空间主要解决三种冲突的问题:常量,函数,类 通俗理解:namespace就相当于是用来建一个目录,将namespace下面的代码放在该目录里面,与外面的区分开来. /* |--------------------------------- |namespace示例 |@黑眼诗人 <www.chenwei.ws>

  • C++中关于[]静态数组和new分配的动态数组的区别分析

    本文以实例分析了C++语言中关于[]静态数组和new分配的动态数组的区别,可以帮助大家加深对C++语言数组的理解.具体区别如下: 一.对静态数组名进行sizeof运算时,结果是整个数组占用空间的大小: 因此可以用sizeof(数组名)/sizeof(*数组名)来获取数组的长度. int a[5]; 则sizeof(a)=20,sizeof(*a)=4.因为整个数组共占20字节,首个元素(int型)占4字节. int *a=new int[4];则sizeof(a)=sizeof(*a)=4,因为

  • C++ namespace相关语法实例分析

    namespace命名空间是C++中一个非常重要的概念,本文实例展示了namespace的相关语法,供大家参考.具体如下: 本段测试代码包括如下内容: (1) 如何访问namespace中声明的名称: (2) namespace导致的相关冲突: (3) namespace可嵌套: (4) 可以在namespace中使用using声明和using编译命令: (5) 未命名的namespace:其作用域为定义该namespace所在的声明区域.C++推荐用来替代static定义静态变量. 具体程序代

  • C++ using namespace std 用法深入解析

    一 :<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的. 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h. 因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就

  • JavaScript创建命名空间(namespace)的最简实现

    最近看Ext源代码,看到了其实现命名空间函数的实现方法: Ext NameSpace实现代码:        复制代码 代码如下: namespace : function(){              var a=arguments, o=null, i, j, d, rt;              for (i=0; i<a.length; ++i) {                  d=a[i].split(".");                  rt = d

  • C++对数组的引用实例分析

    C++中所谓数组引用,即指向数组的引用: 如: int a[10] ; int (&b)[10] = a ; 如果写成: int a[10] ; int* &b = a ; 系统将会报错: cannot convert from 'int [10]' to 'int *&'. 或许你会说在数组名不就是指向这个数组的一个指针吗?题中a是int*类型的,b是指向int*的引用,按理应该是正确的啊,为什么会报错呢?这是因为编译器对指向数组的引用检查更加严格,需要检查数组的维数,在这里a被

  • javaScript NameSpace 简单说明介绍

    打造JavaScript命名空间其实很简单,只需要将自己的函数.对象.变量等放在一个伪命名空间中,即用一个匿名函数包装起来.   复制代码 代码如下: (function(){     function $(id){         return document.getElementById(id);     }     function alertNodeName(id){         alert($(id).nodeName);     } })(); 使用这种伪命名空间可以封装并保护

  • ajax使用不同namespace的action的方法

    ajax 如何使用不同namespace的action 如我的question_save在/question命名空间,那我ajax的url写成:"../question/question_save.aciton" 若我把aciton映射为了html,那一定要写成 ajax的url: "../question/question_save.html" 这是我的教训啊,很深很深的教训啊,特别是总是出现ajax 如何使用不同namespace的action 和the req

  • C++类基本语法实例分析

    类是C++程序设计非常重要的概念,本文即以实例形式说明了类的常见用法.具体如下: 本测试代码主要包括以下内容: (1)如何使用构造函数: (2)默认构造函数: (3)对象间赋值: (4)const使用语法: (5)定义类常量: 一种方法是用enum,另一种方法是使用static. 实例代码如下: #include <iostream> using namespace std; enum sexType { MAN, WOMAN }; class Human { //the default is

  • ASP.Net中命名空间Namespace浅析和使用例子

    关于Namespace(命名空间)的使用,我常用 复制代码 代码如下: < % @ Import Namespace="System.Data" %> ,这是在引用为我们提供的Namespace,这和ASP不同的,我们在ASP.net必须先引用与我们操作有关的Namespace后才能使用相应的功能.其实说白了,一个Namespace; 就是一个组件. 这个是关于ASP.net的高级应用. 我下面简单的列举一些常用的Namespace 复制代码 代码如下: < % @

随机推荐