Flex学习记录(一)——MXML基本知识

简介:

我们使用两种语言来编写Flex程序:MXML和ActionScript。MXML是用来布局用户界面组件的XML标识语言,我们也可以使用MXML来定义一个程序的不可见部分,例如:到服务器数据源的访问以及用户界面组件和服务器数据源的数据绑定。

一.简单的MXML
新建一个HellowWorld.mxml文件,并拷贝下面的内容,看一下运行结果。

复制代码
复制代码
<?xml version="1.0"?>
<!-- mxml\HellowWorld.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:s="library://ns.adobe.com/flex/spark">
    <s:layout>
        <s:VerticalLayout/>
    </s:layout>

    <s:Panel title="My Application">
        <s:Label text="Hello World" fontWeight="bold" fontSize="24"/>
    </s:Panel>
</s:Application>
复制代码
复制代码

 

这是一个最简单的MXML程序,从这个例子,我们可以学到如下几点:
1.<s:Application>是一个程序的root tag,代表一个Spark应用容器。一个项目应该只有一个root tag.
2.xmlns:fx="http://ns.adobe.com/mxml/2009是ActionScript元素所在的命名空间
xmlns:mx="library://ns.adobe.com/flex/mx是MX控件集所在的命名空间
xmlns:s="library://ns.adobe.com/flex/spark是Spark控件集所在的命名空间
MX和Spark控件集有很多相同的控件,Spark是为Flex4新出的,尽量使用Spark控件集中的控件,在Spark控件集里没有相应的控件时再用MX控件集的控件
3.MXML 中的每个tag都和ActionScript中的类或属性对应,ActionScript中的类在MXML中用节点表示,属性可以用attribute表 示,也可以用property表示。比如Panel和Label都是Spark控件集中的类。text,fontSize等都是Label类的属性
4.MXML的文件名不能和ActionScript里面的类和控件名相同,不能和MXML里的tag相同,也不能是application,且后缀必须是小写的mxml。

二.MXML中属性的赋值
MXML中的属性可以用attribute表示,也可以用property表示。如果属性的类型是简单的类型,用两种方式都能表示,如果是复杂的类型,则只能用属性的方式表示,其通用格式如下:

<s:property>
  <s:propertytype>
     ...用property的形式列出属性对象里面的各个变量
  </s:propertytype>
</s:property>


下面对于几种常见的复杂类型,举例说明一下
1.MXML中数组的表示
MXML中可以用tag<fx:Array>和</fx:Array>来表示一个数组,且该tag可以省略。

复制代码
复制代码
<mynamespace:nameOfObjectProperty>
  <fx:Array>
    <fx:Number>94062</fx:Number>
    <fx:Number>14850</fx:Number>
    <fx:Number>53402</fx:Number>
  </fx:Array>
</mynamespace:nameOfObjectProperty> 
复制代码
复制代码


2.MXML中Vector的表示

复制代码
复制代码
<fx:Declarations>  
  <fx:Vector type="String">  
    <fx:String>one</fx:String>
    <fx:String>two</fx:String>
    <fx:String>three</fx:String>
  </fx:Vector>
</fx:Declarations>
复制代码
复制代码


3.MXML中XML对象的表示

复制代码
复制代码
<mynamespace:value xmlns:a="http://www.example.com/myschema">
  <fx:XML>
    <a:purchaseorder>
    <a:billingaddress>
        ...
    </a:billingaddress>
    </a:purchaseorder>
  </fx:XML>
</mynamespace:value> 
复制代码
复制代码


4.MXML中property的值可以用{静态变量}表示,也可以直接用常量表示。例如下面两种方式都可以

复制代码
<s:Wipe direction="{spark.effects.WipeDirection.LEFT}">
    ...
</s:Wipe>
<s:Wipe direction="left">
    ...
</s:Wipe>
复制代码


5.MXML中用\来转义特殊字符,用{\n}或&#13来表示换行符,用&lt;String&gt;来表示<String>

三.定制Application的外观
1.控件库里有一些容器控件,可以进行控制应用的外观,比如HGroup和VGroup控制控件的排列方式,TabNavigator添加Tab查看方式等
2.用CSS控制外观,需要用<fx:Style>tag来包含CSS的定义,且该定义必须是root tag的子节点。

复制代码
复制代码
<?xml version="1.0"?>
<!-- mxml/CSSExample.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:s="library://ns.adobe.com/flex/spark">
    
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";
        
        /* class selector */
        .myClass {
            color: Red
        }
        
        /* type selector */
        s|Button {
            font-size: 18pt
        }
    </fx:Style>

    <s:Panel title="My Application">
        <s:Button styleName="myClass" label="This is red 18 point text."/>
    </s:Panel>
</s:Application>
复制代码
复制代码


3.用skin控制控件外观
<s:Button skinClass="com.mycompany.skins.MyButtonSkin" />

四.ActionScript和MXML的交互
1.在MXML的事件中可以用简单的ActionScript语句
<s:Button label="Click Me" click="textarea1.text='Hello World';" />
2.在MXML中插入ActionScript语句

复制代码
复制代码
<fx:Script>
        <![CDATA[
        public var s:Boolean;
        
        public function doSomething():void {
            // The following statements must be inside a function.
            s = label1.visible;
            label1.text = "label1.visible = " + String(s);
        }
        ]]>
</fx:Script>
<fx:Script source="includes/IncludedFile.as"/>
复制代码
复制代码


3.使用{}进行数据绑定

复制代码
复制代码
<fx:Script>
    <![CDATA[
        [Bindable]
        public var myText:String = "Display" + "\n" + "Content";
    ]]>
</fx:Script>
<s:TextArea width="100%" text="{myText}"/>
复制代码
复制代码


4.对MXML中的tag增加id attribute,这样可以在ActionScript语句中直接访问该对象。
5.用ActionScript创建可以在MXML中使用的控件。

复制代码
复制代码
<?xml version="1.0"?>
<!-- mxml/CustomMXMLComponent.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:MyComps="myComponents.boxes.*">
    <s:Panel title="My Application"
        height="150">
        <MyComps:MyComboBox/>
    </s:Panel>
</s:Application>
复制代码
复制代码


注:文中给出的例子均来自adobe



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2013/05/05/3061134.html,如需转载请自行联系原作者

相关文章
|
9月前
|
容器
Pyside6-第十三篇-布局(最后一章废话-理论篇)
Pyside6-第十三篇-布局(最后一章废话-理论篇)
270 0
|
1天前
|
前端开发 容器
前端知识笔记(二十七)———CSS核心功能手册:从熟悉到精通
前端知识笔记(二十七)———CSS核心功能手册:从熟悉到精通
26 0
|
1天前
|
前端开发
【零基础入门前端系列】—盒子模型(十四)
【零基础入门前端系列】—盒子模型(十四)
|
10月前
|
存储 算法 iOS开发
ZPhotoBrowser (基于之前的那篇文章PhotoKit初用)
作为一个iOS开发人员,我已经不知不觉的在帝都这个地方上干了块两年了。前一阵,由于公司的发展方向的问题,我被迫加入了找工作的大军之中。这可把我担心坏了,因为我之前的一个同事找了好久都没有找到工作,之后他就选择回老家发展了。做过iOS这行的都知道现在是什么行情了,我就不多说了。不过还好我找了一周左右吧,面试不少。但是现在招人的公司,真的不知道要招什么样的开发人员,面试草草了事的偏多。还有就是自认为大牛的比较多,我记得我面了一家智能家居的科技公司。那个面试我的面试官,看了我做过的产品。就给我说了一句:“你就是个调接口和写TableView的啊。”这话听起来真的让人难受,用一句很流行的话说,那就是“
|
前端开发
前端学习案例3-flex重难点3
前端学习案例3-flex重难点3
43 0
前端学习案例3-flex重难点3
|
前端开发
前端学习案例1-flex重难点
前端学习案例1-flex重难点
60 0
前端学习案例1-flex重难点
|
前端开发
前端学习案例2-flex重难点2
前端学习案例2-flex重难点2
49 0
前端学习案例2-flex重难点2
CSS3第三课 浮动内容的介绍。本博客一案例为主。让读者在案例中学会对知识点的总结与介绍。
CSS3第三课 浮动内容的介绍。本博客一案例为主。让读者在案例中学会对知识点的总结与介绍。
87 0
CSS3第三课 浮动内容的介绍。本博客一案例为主。让读者在案例中学会对知识点的总结与介绍。
|
前端开发
前端知识学习案例1-盒子模型1
前端知识学习案例1-盒子模型1
43 0
前端知识学习案例1-盒子模型1
|
前端开发
前端知识学习案例2-盒子模型2
前端知识学习案例2-盒子模型2
32 0
前端知识学习案例2-盒子模型2