看flex3开发手册心得(一)——使用mxml开发应用

编译MXML为SWF文件

你将你的应用作为SWF文件部署,或者你如果有 Adobe LiveCycle Data Services ES你可以将你的应用作为一组MXML,as文件来部署。

如果你使用flex builder,你可以在flex builder中编译,运行swf文件,如果你的程序执行正确,你可以用copy这些文件到一个web容器中的方法,来部署这个应用。用户可以通过http://hostname/path/filename.html访问这个已经部署的swf文件。

flex还有一个基于命令行的编译器,mxmlc,使用它你可以编译mxml文件,你可以使用mxmlc编译一个hello.mxml文件,例如:

mxmlc --show-actionscript-warnings=true --strict=true c:/appDir/hello.mxml
在这个例子中flexInstallDir 是flex的安装目录,appDir 是hello.mxml所在的文件夹。
编译的结果swf文件也就是hello.swf文件和hello.mxml在同一文件架下。

mxml标签和actionscript类的关系
adobe用actionscript类库来实现flex,这个类库包含组件(容器和控件),管理类,数据服务类,和其他各种各样的类。你可以使用mxml和actionscript语言和这些类库来开发你的应用。mxml标签与actionscript类及类的属性保持一致,flex解析mxml标签,将其编译成一个swf文件,这个编译好的swf文件中就有mxml文件对应的actionscript对象。

例如flex提供了actionscript的button类,这个类定义了flex的button控件,你在mxml中,可以这样创建一个button控件

<mx:Button label="Submit"/>
当你使用mxml标签声明一个控件的时候,你创建了一个这个空间类的实例。这条mxml语句创建了一个button对象,并且初始化这个button空间的label属性为字符串“submit”.一个mxml标签与和它对应的actionscript类的类文件中使用同样的命名规范。

在mxml标签中使用id属性

mxml标签中有一个可选的id属性,这个属性的取值在整个mxml文件中必须唯一。如果一个标签含有id属性,你可以在actionscript文件中引用这个对象,
<?xml version="1.0"?>
<!-- mxml/UseIDProperty.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:VBox>
<mx:TextInput id="myText" text="Hello World!" />
<mx:Button id="mybutton" label="Get Weather" click="writeToLog();"/>
</mx:VBox>
<mx:Script>
<![CDATA[
private function writeToLog():void {
trace(myText.text);
}
]]>
</mx:Script>
</mx:Application>

这段代码会使mxml编译器自动生成一个public变量叫做myText,这个变量是一个textInput实例的引用。这个自动生成的变量可以让你在actionscript中,方便的访问组件的实例。你可以在任何acitonscript文件或script块中,使用id来应用这个textInput空间的实例。通过引用一个组件的实例,你可以修改这个组建的属性,调用它的方法。因为每一个id值在一个mxml文件中是唯一的,一个文件中所有的对象又是一个命名空间的一部分,你可以使用这个对象的父对象加.符号来访问这个对象。

使用xml命名空间

在一个xml文档中,标签会被分配到一个命名空间中,命名空间可以使你在一个文档中,引用属于不同集合的xml标签。

在mxml标签中的xmlns属性指定了一个xml的命名空间,使用默认的命名空间可以不用使用前缀。使用一些额外的标签,需要指定一个标签的前缀并且指定一个命名空间。例如,下面这个<mx:Application>标签指定了mxml命名空间中的标签使用mx:这个前缀。这个mxml命名空间的url是http://www.adobe.com/2006/mxml
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

xml命名空间使你可以使用不在mxml命名空间中的用户自定义标签。下面的例子演示了一个使用了CustomBox用户标签的应用,命名空间的值containers.boxes.*指定了这个名叫CustomBox的mxml组件在containers/boxes目录下。
<?xml version="1.0"?>
<!-- mxml/XMLNamespaces.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:MyComps="containers.boxes.*"
>
<mx:Panel title="My Application"
paddingTop="10"
paddingBottom="10"
paddingLeft="10"
paddingRight="10"
>
<MyComps:CustomBox/>
</mx:Panel>
</mx:Application>

containers/boxes是存放应用文件的目录的子目录,或者是在flex-config.xml中声明过的actionscript源文件的路径的子目录。如果在这两个地方都可以找到对应的文件,flex优先使用存放应用文件的目录的子目录下的对应的文件。前缀的名称是任意的,但是你怎么声明前缀的,在使用用户自定义标签的时候,就要那样给你的标签加前缀。当使用的组件在一个swc文件中的时候,这个swc文件就相当于一个目录。一个swc文件对于flex组件来说就是一个归档文件(压缩文件)。这样,flex开发人员可以很简单的使用swc文件。

你可能感兴趣的:(应用服务器,xml,Flex,Adobe,actionscript)