最近轉學AS3,將所學知識整理一下。由于我是學Java的,所以著重點都是跟Java的對比。
聲明方式
public static const varName:Class = new Class();//常量
var varName:*;//任何類型
var varName;//無類型變量,應該是as2遺留下來的
數字
- int 與 Java 中的 Integer 相同
- uint 無符號,只有正數,同樣是32位,最大值比int多一倍。專門用來表示包含alpha通道的顏色:0xFFFFFFFF
- Number 相當于 Java 的 Double。此處需要注意:連續的浮點數相加無法得到整數,相差太多的浮點數相加可能忽略掉小值。
類型默認值
- Number NaN 注意NaN不等于任何東西,包括自己。只能用用工具方法判斷。
- * #ff0000
運算符
運算符本身是一種特殊的函數,運算對象相當于參數。
- == 和 === 前者對比前先進行類型轉換,后者不進行類型轉換。Array中的 indexOf就是 ===。
- != 和 !== 同上
- is 判斷類型,一般與 as 同用:if( var1 is Number) var1 as Number;
- in 相當于 Java 中的 contains
Array
相當于 Java 中的 ArrayList。更加神奇的是,它既是棧又是隊列。
- push 從末尾增加一個對象
- unshift 從頭增加一個對象
- pop 從末尾刪除一個對象并返回
- shift 從頭刪除一個對象并返回
- splice(起點索引,刪除數量,插入元素集合) 刪除和插入元素,類似Python切片,起點可以為負值。
- slice(起點索引,終點索引) 僅僅返回所選范圍,其他同上。
- concat 相當于 Java 中的 addAll 方法
超強的Function
兩種聲明方式:
public var function = function() {}
function 可以游離于 Class 之外,所以會有“全局函數”一說。
function 參數有默認值,有可變數組參數。可以說怎么方便怎么來,如此便有了千變萬化的用法。
function 也是動態類,可以自行添加屬性。
AS3 中方法的參數是引用傳遞。
Object 的新用法
在 AS3 中 Object 除了作為基類還有一種用法—— Map。
用法:
for (var key in obj) {};
for each( var value in obj){}
密封類可以理解為Java中的類,無法動態添加屬性等。而相對的可以用 dynamic聲明動態類。動態類內涵哈希表,可以理解為 Java 中的 Map<String, Object>。 目前我所知道的動態類只有 MovieClip。一般用于 Flash 中給 MC 添加子元素的時候動態增加 name 屬性之用。此處可以善加利用。
AS3編輯及運行機理
AS3運行前需要先編譯成ActionScript bytecode(ABC)文件。ABC必須在SWF文件中才能運行。Flash中 會將每一個
MovieClip 當作一個as文件,進行編譯。所以如果 MC 沒有綁定 as 的話編譯時會自動生成一個同名 as 。Flex中的 mxml
在編譯過程中會先編譯成 as,進而編譯成 ABC。 fla 中還可以包含資源以及外部資源鏈接。
文檔類
文檔類相當于Java中的 main 方法所在的類,是程序的入口。as代碼有兩個地方可以寫,一個是時間軸上的關鍵幀,另一個是 as 文件。此處的文檔類就是 as 文件的形式,應該盡量使用這種形式。