一個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卻可以重複利用其中的資料。其實各有千秋。