基础MXML语法
绝大多数的MXML标签都对应着ActionScript3.0的类或者类的属性。Flex解析MXML标签并编译成SWF文件,包含了相应的ActionScript对象。
ActionScript的语法基于ECMAScript第4版语言规范草案。ActionScript包含了以下特性:
正式的类定义语法
正式的包结构
变量、参数以及返回值的类型指定(仅适用于编译的时候)
使用get和set关键字进行的默认的获取器和设置器
继承
公共和私有成员
静态成员
转换操作符
要查看关于更多关于ActionScript 3.0的信息,请查看“使用ActionScript”。
命名MXML文件
MXML的文件名必须遵从一下的命名规则
文件名必须是通过验证的ActionScript标识符,意思就是说,必须以字母或者下划线(_)开头,且只包含字母,数字,以及下划线。
文件名不可以与ActionScript的类名,组件id值还有“application”这个单词相同。也不要使用mx命名空间下的MXML标签名作为文件名。
文件名必须以小写的.mxml为后缀名。
使用与ActionScript类对应的标签
一个MXML标签使用相同的命名规则对应着一个ActionScript类。类名使用大写字母开头,并使用大写字母将类名中的字母隔开(即帕斯卡命名法)。比如说,当一个标签对着一个类名,其属性将对应着类的属性和事件。
设置组件的属性
在MXML中,一个组件的属性使用相同的命名规则对应着ActionScript属性。一个属性名使用一个小写字母开头,并且使用大写字母将属性名的单词隔开(即Camel-Case,驼峰式命名法)。你可以使用标签属性设置大多数的组件属性,如下:
<mx:Label width =”50” height=”25” text=”Hello World”/>
你可以使用子标签设置所有的组件属性,如下:
<mx:Label>
<mx:width>50</mx:width>
<mx:height>25</mx:height>
<mx:text>Hello World</mx:text>
</mx:Label>
你将会非常经常地使用到子标签用于设置复杂对象的属性的值,因为某些情况下不可能将一个复杂的对象作为值指定给标签属性。在下面的例子中,你将使用子标签将ArrayList对象设置为ComboBox控件的数据提供者。
<mx:ComboBox>
<mx:dataProvider>
<mx:ArrayCollection>
<mx:String>AK</mx:String>
<mx:String>AL</mx:String>
<mx:String>AR</mx:String>
</mx:ArrayCollection>
<mx:dataProvider>
</mx:ComboBox>
通常地,使用子标签设置属性的时候,应当使得子标签的命名空间前缀(比如在前面例子中的mx:)应当与组件标签的命名空间前缀相匹配。
各个组件属性都是以下类型之一:
标量属性,比如一个数字或者字符串
标量值的数组,比如一个数字或者字符串的数组
ActionScript对象
ActionScript对象的数组
ActionScript属性
XML数据
Adobe建议使用标签属性设置标量,用子标签赋值给复杂类型,比如ActionScript对象。
设置标量属性
通常来说,你要指定一个标量属性作为组件标签的属性,如以下的例子所示:
<mx:Label width=”50” height=”50” text=”Hello World”/>
使用常量设置属性
许多组件属性的有效值都被定义成静态常量,这些静态常量被定义在ActionScript中。在MXML中,你可以选择直接使用静态常量设置属性的值,也可以使用静态常量的值,如下所示:
<!—使用静态常量设置属性。 -->
<mx:HBox width="200" horizontalScrollPolicy="{ScrollPolicy.OFF}">
...
</mx:HBox>
<!—使用静态常量的值设置属性-->
<mx:HBox width="200" horizontalScrollPolicy="off">
...
</mx:HBox>
HBox容器定义了一个名为horizontalScrollPolicy的属性定了容器的垂直滚动条的操作。在这个例子中,你将明确地设置horizontalScrollPolicy关闭垂直滚动条。
在第一个例子中,你使用了名为OFF的静态常量设置了horizontalScrollPolicy属性,其中OFF定义在ScrollPolicy类中。在MXML中,当要使用静态常量设置属性值的时候应当使用动态绑定语法。使用静态常量的优点在于Flex编译器认识错误的属性值,并将会在编译时提供问题的错误信息。
或者,你可以将静态常量的值赋值给horizontalScrollPolicy属性。静态常量的值是“off“。当你使用静态常量的值复制给属性值的时候,Flex编译器并不能发现您是否使用了不支持的值。如果你使用了错误的值,只有到了运行的时候才会发现。
在ActionScript中,你将经常地使用静态常量设置属性的值,如以下例子所示:
var myHBox:HBox = new HBox();
myHBox.horizontalScrollPolicy=ScrollPolicy.OFF;
设置默认属性
许多的Flex组件默认定义了一个属性。默认属性(default property)指的是,在你没有明确指定一个属性的时候隐藏在内部的内容的MXML标签属性。比如说,思考一下下面的MXML标签定义:
<mx:SomeTag>
anything here
</mx:SomeTag>
如果这个标签定义了一个名为default_property的默认属性,前面的标签定义相当于以下的代码:
<mx:SomeTag>
<default_property>
anything here
</default_property>
</mx:SomeTag>
也相等于以下的代码:
<mx:SomeTag default_property="anything here"/>
默认属性提供了设置单一属性的快捷机制。对于一个ComboBox,默认的属性就是dataProvider属性。因此下面的代码中两个ComboBox定义是相等的:
<?xml version="1.0"?>
<!-- mxml\DefProp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
<!—省略了默认属性。-->
<mx:ComboBox>
<mx:ArrayCollection>
<mx:String>AK</mx:String>
<mx:String>AL</mx:String>
<mx:String>AR</mx:String>
</mx:ArrayCollection>
</mx:ComboBox>
<!—明确的指定了默认属性。 -->
<mx:ComboBox>
<mx:dataProvider>
<mx:ArrayCollection>
<mx:String>AK</mx:String>
<mx:String>AL</mx:String>
<mx:String>AR</mx:String>
</mx:ArrayCollection>
</mx:dataProvider>
</mx:ComboBox>
并不是所有的Flex组件都定义了默认属性。要确定各个组件的默认属性,请查看Adobe Flex Language Reference(Adobe Flex 语言参考)。
当你创建自定义组件的时候,你也可以定义一个默认属性。要查看更多的信息,请查看“创建并扩展Adobe Flex 3组件“中的“自定义组件中的元数据标签“。
使用反斜杠字符转义字符
上一篇:
FluorineFX开源库
下一篇:
Asp.net如何防止图片被盗链?