初學flex時,被裏面四處亂飛的括號弄得有點頭暈,尤其是一些不同於C,Java中用法的地方。碰到
var
ac:ArrayCollection =
new
ArrayCollection([{name:
"foo"
,no:
0
},{name:
"bar"
,no:
1
}]);
這種兄弟仨一起出場的時候更是無措。
仔細翻了翻文檔,總結一下,順便測試下Easy Google Syntax Highlighter插件:
- 小括號( ):nothing new,就兩個作用:改變表達式運算順序,小學生都會的東西;傳遞函數參數,傳統用法
- 大括號{ }:as3 中,兩個作用:代碼塊,還是傳統;實例化Object類的對象(實例),如
1
var
obj:
Object
= {id:
0
,
label
:
"object"
,date:
"2010.6.22"
};
MXML中,用於嵌入內聯的as代碼或數據綁定(其實數據綁定也可以看作as代碼),如
1
<!-- code block -->
2
<
mx:Button
label
=
"click to say hello"
click
=
"{mx.controls.Alert.show('hello world')}"
/>
3
4
<!-- data binding -->
5
<
mx:TextInput
id
=
"input"
x
=
"10"
y
=
"10"
width
=
"100"
/>
6
<
mx:Text
text
=
"{input.text}"
x
=
"200"
y
=
"10"
/>
- 中括號[ ]:as3中,兩個作用:初始化數組,這點與C和Java用{ }不一樣,很多誤讀就是這麼產生的,如
1
var
arr:
Array
= [
"foo"
,
"bar"
,
"foobar"
];
插入元數據標籤(metadata tag)如Bindable,Embed,Effect等,最常見的就是用於綁定的Bindable,如
1
[Bindable]
2
private
var
arr:
Array
;
又如以下代碼在MyComponent組件上定義myClickEvent事件
1
[Event(name=
"myClickEvent"
, type=
"flash.events.Event"
)]
2
public
class
MyComponent
extends
UIComponent{
3
//...
4
}
在MXML中部分元數據標籤可使用<mx:Metadata>標籤插入,(綁定用<mx:Binding>)作用與腳本相同,如以下代碼定義textSelectedColor的樣式
1
<
mx:Metadata
>
2
[Style(name="textSelectedColor",type="Number",format="Color")]
3
</
mx:Metadata
>
關於<![CDATA[ ]]>,這裏的中括號與as3無關,是XML的標準語法,XML解析器會自動忽略CDATA裏的內容,MXML同樣遵守這一規則
- 尖括號< >:姑且也算吧,沒什麼好說的,定義和關閉標籤,標記語言(markup language)的身份標誌
回頭看第一個例子就很簡單了,最外層的( )爲ArrayCollection的構造函數傳遞參數,ArrayCollection構造函數的參數爲Array數組,這就是[ ]的作用,而該參數數組則包含由{ }實例化的兩個對象。