`
wangzhen5
  • 浏览: 80791 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

MXML详解

    博客分类:
  • Flex
阅读更多
1. MXML语法

MXML语言是专门用于Flex程序中,描述界面表现的一中XML标记语言。我们可以用它来管理程序的整体布局,控制组件的样式和外观,也可以构建非可视化的对象,比如XML数据、与服务器端通信的WebService、组件的数据源等。

    1.1 命名规范

MXML区分大小写,且文件名和变量标示名都区分大小写。

MXML文件以mxml作为扩展名,文件名要遵循AS中变量的命名规则。

所有的MXML都被视为用户自定义的组件,相当于对象,可以使用代码动态创建。

变量名必须以字母或下划线开始,且只能包含字母、数字和下划线。

不能命名为application ,application 是主程序文件的默认标记,不可再使用。

程序不能使用“mx”做为目录名,mx 是官方组件库的命名空间。

    2.2 MXML 文件结构

MXML为标准的XML文件。

我们以一个MXML文件来说明:

Xml代码
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
      
    <mx:Script> 
        <![CDATA[ 
            internal function doClick():void{ 
                tip_txt.text='欢迎来到RIA的世界--开始Flex之旅'; 
            } 
        ]]> 
    </mx:Script> 
      
    <mx:Button x="41" y="90" label="Hello Flex" click="doClick()"/> 
    <mx:Label id="tip_txt" x="41" y="41" text="你好,Flex" fontSize="12"/>     
</mx:Application> 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
<![CDATA[
internal function doClick():void{
tip_txt.text='欢迎来到RIA的世界--开始Flex之旅';
}
]]>
</mx:Script>

<mx:Button x="41" y="90" label="Hello Flex" click="doClick()"/>
<mx:Label id="tip_txt" x="41" y="41" text="你好,Flex" fontSize="12"/>
</mx:Application>第一行声明XML文件采用的语法版本version 和编码格式encoding(默认为utf-8)。

mx:Application:在每个Flex项目中,可能有多个MXML文件,mx:Application为根节点标示程序入口的运行文件。

xmlns:mx=http://www.adobe.com/2006/mxml :将mx定义为XML的命名空间,对应路径为http://www.adobe.com/2006/mxml ,Flex的配置文件中将这个路径定义为一个全局资源标识符,并对应了一个列出mx命名空间下的所有标签的文件。flex-config.xml中配置了命名空间。该文件可在Flex Builder2的安装路径下的Flex SDK 2\frameworks目录中找到。并找到如下代码。

Xml代码
<namespaces> 
   <!-- Specify a URI to associate with a manifest of components for use as MXML --> 
   <!-- elements.                                                                --> 
   <namespace> 
      <uri>http://www.adobe.com/2006/mxml</uri> 
      <manifest>mxml-manifest.xml</manifest> 
   </namespace> 
</namespaces> 

      <namespaces>
         <!-- Specify a URI to associate with a manifest of components for use as MXML -->
         <!-- elements.                                                                -->
         <namespace>
            <uri>http://www.adobe.com/2006/mxml</uri>
            <manifest>mxml-manifest.xml</manifest>
         </namespace>
      </namespaces>从上面的配置发现,http://www.adobe.com/2006/mxml 这个URI和mxml-manifest.xml文件对应,找到该文件,里面列出了所有标签和与标签相关联的类文件路径。

Xml代码
<?xml version="1.0"?> 
<componentPackage> 
 
    <component id="Accordion" class="mx.containers.Accordion"/> 
....................  
....................  
    <component id="WebServiceOperation" class="mx.rpc.soap.mxml.Operation"/> 
    <component id="RemoteObject" class="mx.rpc.remoting.mxml.RemoteObject"/> 
    <component id="RemoteObjectOperation" class="mx.rpc.remoting.mxml.Operation"/> 
    <component id="HTTPService" class="mx.rpc.http.mxml.HTTPService"/> 
    <component id="Consumer" class="mx.messaging.Consumer"/> 
    <component id="Producer" class="mx.messaging.Producer"/> 
 
</componentPackage> 

<?xml version="1.0"?>
<componentPackage>

    <component id="Accordion" class="mx.containers.Accordion"/>
....................
....................
    <component id="WebServiceOperation" class="mx.rpc.soap.mxml.Operation"/>
    <component id="RemoteObject" class="mx.rpc.remoting.mxml.RemoteObject"/>
    <component id="RemoteObjectOperation" class="mx.rpc.remoting.mxml.Operation"/>
    <component id="HTTPService" class="mx.rpc.http.mxml.HTTPService"/>
    <component id="Consumer" class="mx.messaging.Consumer"/>
    <component id="Producer" class="mx.messaging.Producer"/>

</componentPackage> <component id="Accordion" class="mx.containers.Accordion"/>
中的id代表标签名,class表示类文件路径。



xmlns:comp="comps.*" 定义一个命名空间,因为使用了通配符“*”,comps目录下的所有MXML和AS类(不包括子目录的文件)都被包括在comp命名空间下。如comps下有Login.mxml,则在程序中可这样调用:

<comp:Login></comp:Login>



Application 还有一个属性layout ,定义了该节点下元素的布局方式,也就是程序的总体布局方式。absolute 表示绝对定位,所有子元素将按照各自的x、y坐标来定位。



2. 使用组件

<mx:Button></mx:Button> 定义一个按钮组件

如果组件中未包含其他子元素可这样写:<mx:Button />

    组件分类:

布局类: 包括所有的容器组件,如:HBox、Panel等,Spacer、HRule、VRule不是容器,但是主要用于布局。

导航类: 菜单条、按钮条等各种导航功能的组件。

交互类: 内容展示、数据交互相关组件,如:按钮、下拉框、图片、视频等。



    IDE中的组件面板列出了所有的可视化组件, 可直接拖入编辑区使用。

    通过IDE的代码提示输入<mx:跟进可以列出mx下的所有对象。



3. 自定义MXML组件

基于组件开发模式是Flex的一个特色,程序中所有的MXML和AS类文件,都被当作用户自定义的组件。

我们来建一个MXML组件:

New->MXML Component

在弹出的窗口输入组件的文件名Filename,并选择扩展哪一种组件Based on,我们这里选择Image对象。然后Finish。

然后点击Image组件,在属性面板的Source属性设置图片的路径。

Xml代码
<?xml version="1.0" encoding="utf-8"?> 
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml" source="pic/9.jpg"> 
</mx:Image> 

<?xml version="1.0" encoding="utf-8"?>
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml" source="pic/9.jpg">
</mx:Image>

然后在程序中就可以使用该自定义的组件,将其从用户面板拖入到编辑区,图片显示正常。

Xml代码
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*"> 
      
    <mx:Script> 
        <![CDATA[ 
            internal function doClick():void{ 
                private function _btn_click(event:MouseEvent):void{ 
  tip_txt.text='欢迎来到RIA的世界--开始Flex之旅'; 
}          } 
        ]]> 
    </mx:Script> 
      
    <mx:Button x="41" y="90" label="Hello Flex" click="doClick()"/> 
    <mx:Label id="tip_txt" x="41" y="41" text="你好,Flex" fontSize="12"/>     
    <ns1:imageEnboga x="205" y="90"/> 
</mx:Application> 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*">

<mx:Script>
<![CDATA[
internal function doClick():void{
private function _btn_click(event:MouseEvent):void{
  tip_txt.text='欢迎来到RIA的世界--开始Flex之旅';
} }
]]>
</mx:Script>

<mx:Button x="41" y="90" label="Hello Flex" click="doClick()"/>
<mx:Label id="tip_txt" x="41" y="41" text="你好,Flex" fontSize="12"/>
<ns1:imageEnboga x="205" y="90"/>
</mx:Application> <ns1:imageEnboga x="205" y="90"/>
就是我们拖入的自定义组件,程序自动添加了ns1命名空间。我们改变自定义组件的位置放到view文件夹,代码变成:

<view:imageEnboga x="205" y="90"/>



4. 编写ActionScript

    MXML文件经过编译最后也是被转换成AS来执行,在一个Flex程序中,主程序会被转换为Application对象的子类,自定义对象会被转换为父级对象的子类。

4.1 在MXML中使用AS

在组件的事件属性中使用AS来处理事件

比如

Xml代码
<mx:Button x="41" y="90" label="Hello Flex" click="tip_txt.text='欢迎来到RIA的世界--开始Flex之旅'"/> 

<mx:Button x="41" y="90" label="Hello Flex" click="tip_txt.text='欢迎来到RIA的世界--开始Flex之旅'"/>
上面代码中的click="tip_txt.text='欢迎来到RIA的世界--开始Flex之旅'"会被编译为

Xml代码
private function _btn_click(event:MouseEvent):void{    
    tip_txt.text='欢迎来到RIA的世界--开始Flex之旅';  


private function _btn_click(event:MouseEvent):void{ 
    tip_txt.text='欢迎来到RIA的世界--开始Flex之旅';
}这个函数被注册为按钮的点击事件侦听器,一旦点击事件触发,函数就会被调用。



在MXML中插入AS块

Xml代码
<mx:Script> 
    <![CDATA[ 
    //这里是AS代码 
    ]]> 
</mx:Script> 

<mx:Script>
    <![CDATA[
    //这里是AS代码
    ]]>
</mx:Script>此标签可以放在根节点内的任何位置,同时必须用CDATA将代码包起来。CDATA不能嵌套使用。

AS中的注释是 //单行注释    /*多行注释*/

MXML中的注释和XML一样<!-- 注释-->



4.2 创建外部AS文件

New->ActionScript file 可以创建一个外部AS文件

Xml代码
<mx:Script source="my.as"/> 

<mx:Script source="my.as"/>在程序中可以使用上面的代码导入。



4.3 创建AS类文件

New->ActionScript Class 可以创建一个AS类文件

Xml代码
package  
{  
    public class Test  
    {  
        function Test(){  
            trace("Test");  
        }  
    }  


package
{
    public class Test
    {
function Test(){
trace("Test");
}
    }
}上面代码创建了一个Test类,在构造函数Test()中在控制台打印Test。

在主程序中可调用:

Xml代码
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="initApp()"> 
      
    <mx:Script> 
        <![CDATA[ 
            internal function initApp():void{ 

                var myTest:Test = new Test(); 
            } 
        ]]> 
    </mx:Script> 
</mx:Application> 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="initApp()">

<mx:Script>
<![CDATA[
internal function initApp():void{

var myTest:Test = new Test();
}
]]>
</mx:Script>
</mx:Application>applicationComplete是Application对象的一个事件,程序初始化后触发此事件。

var myTest:Test = new Test()这个代码的作用是创建一个Test对象,创建对象用new关键字。



5 编辑非可视化对象

创建数据

Xml代码
     <mx:Array id="array_data"> 
<mx:String>Flex developer</mx:String>   
<mx:String>Flash developer</mx:String>   
<mx:String>Web developer</mx:String>   
<mx:String>Mobile developer</mx:String>   
lt;/mx:Array> 

       <mx:Array id="array_data">
<mx:String>Flex developer</mx:String>
<mx:String>Flash developer</mx:String>
<mx:String>Web developer</mx:String>
<mx:String>Mobile developer</mx:String>
</mx:Array>定义1个包含4个字符串元素的数组,相当于下面的代码

Xml代码
       <mx:Script> 
    <![CDATA[ 
        public var array_data:Array = new Array(); 
        array_data.push("Flex developer"); 
        array_data.push("Flash developer"); 
        array_data.push("Web developer"); 
        array_data.push("Mobile developer"); 
    ]]> 
</mx:Script> 

        <mx:Script>
<![CDATA[
public var array_data:Array = new Array();
array_data.push("Flex developer");
array_data.push("Flash developer");
array_data.push("Web developer");
array_data.push("Mobile developer");
]]>
</mx:Script>定义好数组之后,可以作为List或者其他组件的数据源dataProvider

<mx:List x="20" y="20" dataProvider="{array_data}" width="180"></mx:List>

Xml代码
      <mx:XML id="myData"> 
       <node label="资料"> 
                <node label="Music"> 
               <node label="古典"/> 
               <node label="摇滚"/> 
               <node label="民歌"/> 
           </node> 
           <node label="Movie"> 
               <node label="法国"/> 
               <node label="美国"/> 
           </node> 
       </node>      
</mx:XML> 

       <mx:XML id="myData">
        <node label="资料">
                 <node label="Music">
                <node label="古典"/>
                <node label="摇滚"/>
                <node label="民歌"/>
            </node>
            <node label="Movie">
                <node label="法国"/>
                <node label="美国"/>
            </node>
        </node>   
</mx:XML>创建一段XML做为Tree树型组件的数据源。

<mx:Tree x="20" y="200" labelField="@label" dataProvider="{myData}" width="180"></mx:Tree>



用MXML语句创建类实例

<view:Test></view:Test>

这样就创建了之前定义的Test类的实例。相当于用AS new一个出来
分享到:
评论

相关推荐

    编译MXML详解及代码详解[定义].pdf

    编译MXML详解及代码详解[定义].pdf

    Flex开发入门PDF电子书

    #### 三、MXML详解 1. **MXML的使用场景**: - 定义用户界面组件的布局。 - 配置组件属性,如按钮的标签文本。 - 设置组件间的事件处理逻辑。 - 实现数据绑定,连接用户界面与后端数据源。 2. **MXML示例**: ...

    FlexQuickStarts中文版

    #### MXML详解 **定义与功能**: MXML(Flex Markup Language)是一种标记语言,专门设计用于简化Flex应用程序的创建过程。它允许开发者以声明的方式定义用户界面,包括各种UI组件及其布局。 **基本语法**: MXML...

    Flex从入门到实践_完全学习教程

    2. **MXML详解** - MXML语法基础 - 常用MXML组件介绍(如Button、TextField等) - 如何使用MXML构建复杂用户界面 3. **ActionScript基础** - ActionScript 3.0简介 - 变量、数据类型及控制结构 - 函数、类与...

    flex入门

    4. **MXML详解** - **组件**:MXML文件中的元素通常对应于Flex组件,如`&lt;Button&gt;`、`&lt;DataGrid&gt;`和`&lt;LineChart&gt;`,这些组件可以方便地在界面上创建交互元素。 - **属性**:每个组件都有自己的属性,如`label`、`...

    flex 超牛的验证码flex 超牛的验证码flex 超牛的验证码

    ValidatorMain.mxml详解 在这份代码中,我们看到的是一个`Canvas`容器,里面包含了一系列`Button`组件。这些按钮分别定义了不同的颜色、位置和点击事件处理函数。 - **Canvas**:这是一个容器控件,用来放置其他...

    flex开发工具的学习.txt

    MXML详解 - **基本元素**:MXML是Flex的标记语言,用于定义UI组件和布局。 - **执行流程**:MXML文档被解析后,会根据其中的元素和属性生成对应的Flex组件实例。 - **与ActionScript的交互**:MXML中的组件可以通过...

    使用容器和MXML样式

    ### 使用容器和MXML样式的知识点 #### 一、引言 在Flex开发中,容器和MXML样式是非常重要的组成部分,它们能够帮助开发者更高效地管理和美化用户界面。本篇文章将详细解读“使用容器和MXML样式”的核心知识点,包括...

    MXML语法关于flexview

    【MXML语法详解及其在FlexView中的应用】 MXML(Markup for the MX User Interface)是一种基于XML的标记语言,主要用于Flex应用程序中构建用户界面。它允许开发者以声明式的方式描述UI组件、布局、样式和数据绑定...

    mxml-2.2.1.tar.gz_mxml

    **mxml-2.2.1.tar.gz_mxml:XML解析库详解** XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于Web应用程序、数据交换和配置文件等领域。`mxml`是其中一款高效且易用的XML解析库,...

    mxml 提炼公共接口

    使用mxml 库指定一个标准的接口,使用putInt、getInt、putString、getString、putStringArray、getStringArray等。mxml的详解可以参考https://blog.csdn.net/shift_wwx/article/details/99677421

    Flex_3_RIA开发详解与精深实践.pdf

    Flex 3 RIA(Rich Internet Application)开发详解与精深实践是针对Adobe Flex 3这一技术的深度学习资料。Flex是Adobe公司推出的一种用于构建富互联网应用(RIA)的开源框架,它基于ActionScript编程语言和Flash ...

    Flex ActionScript 3.0交互式开发详解源码(四)

    在本主题"Flex ActionScript 3.0交互式开发详解源码(四)"中,我们将深入探讨这个强大的开发工具和技术。 一、ActionScript 3.0基础 ActionScript 3.0相较于之前的版本,有了显著的性能提升和更严谨的类型系统。它...

    WEB编程实例、教程详解

    - Flex 3-code.zip:Flex是Adobe开发的一种用于构建富互联网应用程序(RIA)的框架,基于ActionScript和MXML。这部分可能包含了使用Flex 3创建用户界面和交互的代码示例。 - Pro_Ajax_and_the_...

    ArcGIS_Flex.rar_ArcGIS flex_ArcGIS_Flex_NavigationSkin.mxml_arc

    《ArcGIS Flex应用详解与NavigationSkin.mxml剖析》 ArcGIS Flex是Esri公司开发的一款基于Adobe Flex技术的地理信息系统(GIS)开发框架,它允许开发者构建富互联网应用程序(RIA),将复杂的地理信息数据和分析...

    Flex_4.0_RIA开发详解讲义.rar

    这份"Flex_4.0_RIA开发详解讲义"显然是一个详细的教程,旨在帮助开发者深入理解Flex 4.0平台的各个方面。以下是基于这个主题的详细知识点讲解: 1. **Flex 4.0简介**:Flex 4.0,又称为Gumbo,是Flex框架的重大更新...

Global site tag (gtag.js) - Google Analytics