小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Flex語法

 lanyunleng 2011-12-02

一個變量或者常量被聲明時,必須指定其數(shù)據(jù)類型:
原生數(shù)據(jù)類型:語言本身提供:字符串、整數(shù)、布爾型等
復(fù)雜數(shù)據(jù)類型:由基本數(shù)據(jù)類型組成的復(fù)合型類型:類、接口等。

基本數(shù)據(jù)類型:
Boolean:布爾型,true 和 false
int: 整數(shù),存放32位二進制整數(shù),范圍:-2147483648~2147483647,當超出自動轉(zhuǎn)為Number
Null:空值,是字符串和所有類的默認值。
Number:整數(shù)型和浮點型,使用64位雙精度格式存放數(shù)據(jù),沒有小數(shù)點時自動轉(zhuǎn)換成整數(shù)。最小值和最大值分別存放在Number 對象的MIN_VALUE 和 MAX_VALUE屬性中。
String:字符串,以Unicode 編碼格式存放。
uint:正整數(shù)類型,0~4294967295
void:值為undefined,只能用作函數(shù)的返回類型。

復(fù)雜數(shù)據(jù)類型:Object 對象、 Array 數(shù)組、 Date 日期、Error 錯誤對象、Function 函數(shù)、 RegExp 正則表達式、XML XML數(shù)據(jù)對象、XMLList。
其中Object 是所有對象的基類。

以下是各個類型的默認值
Object、Array :null
Number:NaN
int、uint:0
Boolean:false
*:不定類型,默認值:undefined。


7.3.2 字符串
可以使用單引號和雙引號 來聲明字符串,也可以使用String 的構(gòu)造函數(shù)來生成:
var str1:String = 'string';
var str2:String = "string";
var str3:String = new String("string");

使用轉(zhuǎn)義符號“\” 來轉(zhuǎn)義符號后面的字符:"string\"test" = string"test

String 的屬性:
length:用來獲取字符串的長度
contact(...args):合并字符串,也可以使用+合并字符串
charAt(index):獲取index位置的字符。
indexOf(val, starIndex):從starIndex 開始查找val 在字符串中第一個出現(xiàn)的位置。找不到返回-1
split(delimiter, limit):返回以delimiter 分隔最大為limit的數(shù)組。
substr(startIndex, len):從startIndex 位置開始截取長度為len的字符,如果startIndex為-1表示最后一個位置,當len大于最大長度時,自動返回最大長度值。
substring(startIndex, endIndex):截取從 startIndex 到 endIndex位置的字符,兩個參數(shù)都不能為負數(shù),否則轉(zhuǎn)為0,如果endIndex 省略,取默認值:字符的長度。
slice(startIndex, endIndex):同substring,并允許startIndex, endIndex 為復(fù)數(shù)。
toUpperCase():轉(zhuǎn)換為大寫
toLowerCase():轉(zhuǎn)換為小寫


7.3.3 數(shù)字計算
算術(shù)運算符:符號 符號說明 符號 符號說明
+ 加法運算 -- 減1運算
- 減法運算 += a=a+ b
* 乘法運算 -= a=a- b
/ 除法運算 *= a=a* b
% 取模運算 /= a=a/ b
++ 加1運算 %= a=a% b


在進行除法運算時,如果被除數(shù)為0,則返回值為 Infinity。

Math 類 方法說明:
Math.round(n):四舍五入
Math.floor(n):返回小于或等于指定數(shù)字n 的最大整數(shù)
Math.ceil(n):返回大于或等于指定數(shù)字n 的最小整數(shù)
Math.pow(val1, val2):計算val1 的 val2 次冪
Math.sqrt(val):val的平方根
Math.max(val1, val2, ...rest):技術(shù)給定數(shù)字的最大值
Math.min(val1, val2, ...rest):技術(shù)給定數(shù)字的最小值
Math.randow():獲取一個隨機數(shù)字: 小于1大于等于0


7.3.4 數(shù)組的使用
創(chuàng)建數(shù)組:
var arr:Array = new Array(); //默認元素值為undefined
var arr:Array = new Array(3); //創(chuàng)建一個包含3個元素的數(shù)組。
var arr:Array = new Array("1", "2", "3"); //直接給數(shù)組定義元素
var arr:Array = [];
var arr:Array = ["1", "2", "3"];
var arr:Array = [3]; //并不是定義3個元素,而是將3作為數(shù)據(jù)放到數(shù)組中

獲得數(shù)組元素:
arr[0]:第一個元素,如果下標超出范圍,返回 undefined
arr.length:數(shù)字的長度

插入元素:
push():將數(shù)據(jù)添加到數(shù)組的尾部,push("flex")
unshift():將數(shù)據(jù)添加到數(shù)組隊頂部,unshift("flex")
splice(startIndex, deleteCount, ...values):把數(shù)據(jù)插入到數(shù)組的指定位置,startIndex:操作的下標,deleteCount:要刪除的元素個數(shù),...values:要添加的若干數(shù)據(jù)。

刪除元素:
pop():刪除數(shù)組的最后一個元素
shift():刪除第一個元素
splice(startIndex, deleteCount, ...values):刪除任意位置的元素,從startIndex開始刪除deleteCount個元素,并添加元素 values。

排序:
sort:主要對簡單數(shù)據(jù)結(jié)構(gòu)的數(shù)組進行排序
sortOn:對復(fù)雜數(shù)據(jù)結(jié)構(gòu)的數(shù)組排序
reverse:將現(xiàn)有順序逆向
排序規(guī)則:排序規(guī)則可同時使用如:sort(Array.CASEINSENSITIVE | Array.DESCENDING)
Array.CASEINSENSITIVE:不區(qū)分大小寫
Array.DESCENDING:降序排序
Array.UNIQUESORT:如果元素都是唯一,不存在重復(fù)就進行排序,否則不排序
Array.RETURNINDEXEDARRAY:將排序后的元素的新順序返回,但不修改原來的數(shù)組
Array.NUMERIC:按照數(shù)字大小排序
復(fù)雜排序:
arr.sortOn("age", Array.NUMERIC); //"age"為元素的屬性,將使用age來排序

多維數(shù)組:
var arr:Array = new Array();
arr:push(["1","2"]);
訪問:arr[0][0]


7.3.5 類型檢測和轉(zhuǎn)換
類型檢測:
typeof 對象:如果是由用戶的類產(chǎn)生的對象,一律返回object。只能對基本類型檢測。
數(shù)據(jù)類型 結(jié)果 數(shù)據(jù)類型 結(jié)果
Array object object object
Boolean boolean String string
Function function uint number
int number XML xml
Number number XMLList xml


對象 is 類型:對對象的類型進行精確判斷。如果對象是類型返回true,否則返回false。

類型轉(zhuǎn)換:
隱式轉(zhuǎn)換:大部分由flash player 來完成,如:undefined 會自動轉(zhuǎn)為null
顯示轉(zhuǎn)換:通過編寫代碼來完成:類型(對象) ,也可以通過這樣轉(zhuǎn)換:對象 as 類型 ,如果成功返回對象轉(zhuǎn)換后的值,否則返回null,不會引發(fā)異常。

7.4 控制程序的流程

7.4.1 選擇語句
if 流程控制:
if(條件表達式){
//代碼塊
}else{
//代碼塊
}eles if(條件表達式){
//代碼塊
}

switch 流程控制:
switch(條件表達式){
case 值1:
      //代碼塊
      break;
case 值2:
      //代碼塊
      break;
.....
default:
      //當上面的值都不匹配執(zhí)行 default 里面的語句。
}


7.4.2 循環(huán)語句
for 循環(huán):
for(表達式; 條件表達式; 表達式){
//代碼塊
}

for...in 循環(huán) : 遍歷對象的屬性名
for(var 屬性名 in 對象){
//對象[屬性名]
}

for each...in 循環(huán): 遍歷對象的屬性值
for each(var 屬性值 in 對象){
//這里可以直接使用屬性值
}

while 循環(huán):
while(條件表達式){
//代碼塊
}

do...while 循環(huán):
do{
//代碼塊
}while(條件表達式)


7.4.3 跳轉(zhuǎn)語句
break:用來從當前的循環(huán)體中跳出,結(jié)束循環(huán)
continue:結(jié)束本次循環(huán),繼續(xù)下次循環(huán)。
return:結(jié)束函數(shù)的運行,返回。

其他注意事項

01 : id屬性并不是每個MXML標記必須的;
02 : MXML的根標記不支持id屬性;
03 : 布爾屬性的值只允許true或false;
04 : 標記必須同時包含source和destination屬性,并且不能包含id屬性;
05 : 標記的field屬性是必須的,并且不能包含id屬性;
06 : 標記必須包含wsdl或者serviceName屬性,并且不能同時使用;
07 : 標記必須包含source或者named屬性,并且不能同時使用;
08 : 標記必須包含url或者serviceName屬性,并且不能同時使用;
09 : 標記必須包含name屬性,并且不能包含id屬性;
10 : 標記必須包含name屬性,并且不能包含id屬性。
7.1.1 AS 3.0 不是 AS 2.0 簡單的升級
AS 3.0 支持運行期間的數(shù)據(jù)類型驗證。AS 2.0只支持者編譯期間的類型驗證。增強的異常處理機制使用新的虛擬機AVM2(ActionScript Virtual Machine),代碼的運行速度提升了10倍以上。


請結(jié)合上文閱讀下面的小貼士

var str:*  這里的星代表不確定類型,可以賦予任意類型的值。

使用下面的代碼來捕獲/處理異常:
try{
  代碼
}catch(errObject:Error){
  trace("這里在代碼處發(fā)生錯誤執(zhí)行,錯誤信息:"+errObject.message);
}finally{
  trace("這里一定會被執(zhí)行");
}

AS2.0 代碼編譯為字節(jié)碼,體積小且安全,無法直接瀏覽SWF中的代碼,但執(zhí)行效率較低。計算機采用的是二進制代碼來執(zhí)行。AS3.0采用了JIT(Just in time compilation)技術(shù),程序中運行時將字節(jié)碼翻譯為二進制碼,并保存在內(nèi)存中,從而改善了字節(jié)碼的執(zhí)行性能。


7.1.2 面向?qū)ο蟮木幊趟枷?/STRONG>

在AS3.0中所有一切都是對象,每個對象都具有自己的屬性和方法。
在面向?qū)ο蟮某绦蛟O(shè)計中,對象必須被定義為類,它具有如下面向?qū)ο蟮奶匦裕?BR>
封裝 :最主要的優(yōu)點就是將對象的信息隱藏,吧功能模塊化。用戶關(guān)心的是怎么去用這個類,不關(guān)心它是怎么實現(xiàn)的。繼承 :子類可以繼承父類的方法和屬性,還可以增加自己的新功能和屬性。可重用 :體現(xiàn)了封裝和繼承的優(yōu)點。
抽象類:無法產(chǎn)生對象,定義很廣泛,范圍很大,無法有與之對應(yīng)的具體實現(xiàn)。用來被其子類繼承,它的子類必須定義了父類的抽象方法。

7.2 AS 3.0 的面向?qū)ο笳Z法

7.2.1 創(chuàng)建類和對象
在ActionScript 中,類以as 為擴展名,文件名和類名相同。區(qū)分大小寫,基本語法:
package 包名 {
  修飾詞 class 類名 {
    //代碼塊
  }
}
package :類所屬的包,一個類必須被放在包中。一個包對應(yīng)文件系統(tǒng)中的一個文件夾,多層級的包對應(yīng)多層級的文件夾,層級之間用點號分開:package mx.controls

類和變量以及函數(shù)名都遵循相同的命名規(guī)則,只能由字母、數(shù)字和下劃線組成,不能以數(shù)字開頭。類的定義必須在package 里面。

在一個AS類文件中,只能有一個public 類型的類,位于package 里面,且文件名必須和這個類名相同。

類有以下的修飾詞:
public:公有類型,這個類可以在任何地方的任何對象訪問,一般用來定義全局使用的類。internal:內(nèi)部類型,只能在同一個package 中的類才能訪問,如果沒有指定修飾詞為internal。dynamic:動態(tài)類型,類的屬性和方法不確定,允許在運行時動態(tài)的添加。MovieClip 類便是動態(tài)類。當要繼承動態(tài)類時,也要定義為動態(tài)類型。一般只用于特殊場合。final:終點類型,表示類是繼承關(guān)系中的終點,不能被繼承??梢员灰暈橐粋€固定的、無法被動態(tài)修改的常數(shù)。 public 和 internal 是最基本的修飾詞,可以用來定義dynamic 和 final 類的類型。
在一個as文件中,可以定義多個類,但只能一個類位于package 中。

var 對象名:類名 = new 類的構(gòu)造函數(shù)();  //實例化一個類
var 關(guān)鍵字用來聲明一個變量或?qū)ο蟆?BR>如果使用的類和代碼所在的對象不在同一個包時,需要用 import 關(guān)鍵字將它引用進來:import 類的路徑

類的構(gòu)造函數(shù):定義變量時被調(diào)用,跟類名相同的函數(shù),必須是public類型,且沒有返回值。構(gòu)造函數(shù)是可選的,當沒有定義時,編譯器會自動添加一個空的函數(shù)。


7.2.2 定義屬性和函數(shù)

屬性是定義在類中的變量或者常量,而方法則對應(yīng)一個函數(shù),當調(diào)用類的方法時,也就是執(zhí)行一個函數(shù)來完成相應(yīng)的功能。

屬性定義:定義一個類型為String的屬性str,并符初始值"Hello"
private var str:String = "Hello";

方法:定義了一個方法ff 返回值為空,方法必須定義返回值
public function ff():void{//方法代碼};

使用關(guān)鍵字 this 代表當前對象,指向類的實例。只有在創(chuàng)建類的實例時,this 才確立了自己的身份。

屬性和函數(shù)有以下修飾詞:public > internal > protected > private public:公有類型,可以被所有的類使用。protected:保護類型,定義的屬性和函數(shù)可以在內(nèi)部使用,或者在子類的內(nèi)部使用,但外部是無法看到的。private:私有類型,最嚴格的類型,只能在類的內(nèi)部使用,外部無法看到的。internal:內(nèi)部類型,只能在同一個package 內(nèi)部使用,可以被同一個 package 內(nèi)的類訪問。
函數(shù)參數(shù)默認值:如果調(diào)用函數(shù)時沒有傳入值,則使用默認值。
public function doTest(s:String = "默認值"):void{//代碼}

函數(shù)的不定參數(shù):參數(shù)的個數(shù)可以動態(tài)改變,不定參數(shù)使用...args 的形式,其中args是一個數(shù)組,存放了所有的參數(shù)。比如:
public function doTest(...args):void{
  args[0];
  args[1];
  .....
}
調(diào)用時:
doTest("參數(shù)1","參數(shù)2",...);


7.2.3 靜態(tài)屬性、函數(shù)和常量

類的屬性或者函數(shù)具有唯一性,即使類沒有被實例化,它們也始終存在于內(nèi)存中,不管類有多少個實例,靜態(tài)屬性和函數(shù)都只有1個,且和實例沒有關(guān)系。
靜態(tài)函數(shù)只能訪問類的靜態(tài)變量和靜態(tài)函數(shù)。

定義靜態(tài)類型:使用關(guān)鍵字 static ,其中public 和static 位置可以對調(diào)。
public static var str:String = "Hello";
public static function doTest(s:String):void{}

定義常量:常量的值在確認后就不能改變,使用關(guān)鍵字 const 定義:
public const STR:String = "我是常量";
如果將常量定位為靜態(tài)類型,就成為了類的 靜態(tài)常量。
一般采用大寫字母定位常量。

7.2.4 繼承

繼承是指在已有類的基礎(chǔ)上加新的屬性和方法,保留了已有類的屬性和方法。
AS 3.0 只允許一次繼承一個父類。
子類可以訪問父類中 public 和protected 類型的屬性和函數(shù),如果父類和子類中同包下,可訪問internal類型的屬性和方法,但private是無法訪問的。
子類不能定義父類非private類型的屬性和方法。
繼承類使用關(guān)鍵字 extends:
public class subFl extends Fl

覆蓋父類的方法:使用關(guān)鍵字 override ,在覆蓋時,方法的格式必須是一樣的。
父類方法:protected function doTest():void;
覆蓋的方法:override protected function doTest():void;

調(diào)用父類的方法:super.doTest();
使用final 關(guān)鍵字定位為類不能被繼承。


7.2.5 接口

AS3.0 沒有提供定義抽象類的方法,只提供了接口。
接口是若干方法的集合,它只聲明這些方法,而不實現(xiàn)方法。描述一類具有共同特性的對象,這些對象都實現(xiàn)了接口中的方法,同時有自己的特點。
接口只支持:public 或者 internal

定義接口:
public interface IExample{
  function start(task:String):void;
  function stop(task:String):void;
}

接口也可以實現(xiàn)繼承,一次能繼承多個接口:
public interface IExample extends Iinterface1, Iinterface2

接口的實現(xiàn):implements ,一次可以實現(xiàn)多個接口,用逗號分隔。
public class Example implements IExample{
  public function start(task:String):void{
    //
  }
  public function stop(task:String):void{
    //
  }
}

在實現(xiàn)類中,必須定義接口中所有的方法,且遵循以下規(guī)則:
函數(shù)必須聲明為 public 類型函數(shù)名相同參數(shù)數(shù)量和類型相同返回值類型相同
同時繼承類和實現(xiàn)接口:
public class Example extends Canvas implements IExmple

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多