一个Flex控件其实是一个AS类,它即可以在MXML里用基于标签的方式声明,也可以使用AS语句进行声明。
为了弄清我们该怎样使用一个控件,你首先得知道控件的公开的接口,即它的API,你需要知道有关控件的如下知识:
属性、方法、事件、样式、效果。你可以使用MXML初始化你的控件,我们称之为声明实例。你也可是使用 ActionScript3.0来初始化控件,我们叫它编程实例。
用MXML实现Label控件:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:Button id= "myButton" label="click me" />
<s:Label text="Hello World" fontSize="18" fontWeight="bold" x="30" y="30" />
</s:Application>
用ActionScript实现Label控件:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import spark.components.Label;
protected var myActionScriptText:Label;
protected function creationCompleteHandler(event:Event):void{
myActionScriptText = new Label();
myActionScriptText.text = "Hello World";
myActionScriptText.setStyle("fontSize", 18);
myActionScriptText.setStyle("fontWeight", "bold");
myActionScriptText.setLayoutBoundsPosition(30,30,true);
this.contentGroup.addElement(myActionScriptText);
}
]]>
</fx:Script>
<s:Button id= "myButton" label="click me"
click="creationCompleteHandler(event)">
</s:Button>
</s:Application>
以上可以看出,两种语言实现了同样的作用,但是MXML却用了减少了很多行的代码。而ActionScript却可以重复利用其中的数据。其实各有千秋。