隨著Flash CS3正式版的發(fā)布,估計(jì)很多朋友都開(kāi)始從AS2遷移到AS3了。不過(guò)AS3比AS2改變的實(shí)在太多,在as2中很多方法屬性在as3中并不相同,甚至消失,而且目前幫助文檔是E文的,現(xiàn)下的as3基礎(chǔ)文章也并不多,因此特開(kāi)此貼,集合一些基礎(chǔ)性的要點(diǎn),盡量以例子來(lái)說(shuō)明,讓大家更快更好的往AS3遷移。文中如有錯(cuò)誤,敬請(qǐng)指正。有興趣的朋友也可以一起來(lái)添加。
1、常量 先看AS2代碼:var str:String; var num:Number; var boo:Boolean; var obj:Object; var notyped; trace(str+newline+num+newline+boo+newline+obj+newline+notyped); //return undefined undefined undefined undefined undefined 再看AS3代碼:
var str:String; var num:Number; var boo:Boolean; var obj:Object; var notyped; trace(str+"\n"+num+"\n"+boo+"\n"+obj+"\n"+notyped); //return null NaN false null undefined
從上面2個(gè)例子可以清楚的看到:在as2中String、Number、Boolean、Object 的默認(rèn)值都是undefined,而在as3中則分別為null、NaN、false、null。只有未作申明的變量的默認(rèn)值才是undefined。因此,在as2中一個(gè)"undefined"打天下的時(shí)代已經(jīng)過(guò)時(shí)了,在as3中更加明確。同時(shí)as2中還有一個(gè)常量newline 在as3中已經(jīng)取消,由"\n"替換。另外特別說(shuō)明就是trace 方法的功能也加強(qiáng)了,參數(shù)個(gè)數(shù)不限,因此上面可以改成trace(str,num,boo,obj,notyped)了。
2、操作符 這里只討論instanceof。雖然as3中還保留了這個(gè)操作符,但as3中推薦用is代替它。而且is的用法更為靈活。代碼:
var mystr:String="test"; var mytest:Test = new Test();//Test is extends SuperTest trace(mytest instanceof SuperTest); //AS2 return false //AS3 return true trace(mystr instanceof String);//AS2 return false trace(mystr instanceof String);//AS3 return true trace(mystr is String);//AS3 return true 從此例可以看出instanceof 在as3中的比as2中有了變化。在as2中instanceof 不會(huì)將原始類(lèi)型轉(zhuǎn)換為包裝對(duì)象,因此在上面例子中的 String 驗(yàn)證中返回false,并且它對(duì)超類(lèi)(如SuperTest)不起作用。而在as3中它只檢查原型鏈,所以在第一個(gè)trace 中會(huì)返回 true。但是as3中instanceof 并不支持接口,而is 支持。代碼:
var mytest:Test = new Test();//Test implements InterfaceTest trace(mytest is InterfaceTest); //AS3 return true trace(mytest instanceof InterfaceTest); //AS3 return false
至于add、eq、gt、ge、<>、and、not、or、ne、lt、le等AS1的語(yǔ)法在as3中統(tǒng)統(tǒng)取消了。
3、參數(shù) 在AS3中增加了一個(gè)... (rest)這樣的參數(shù)。它的作用是指明函數(shù)可以接收任意多個(gè)以逗號(hào)分隔的參數(shù)。AS3代碼:
function testfun1(param0, param1, ...arg) { trace(arg is Array,arg,arg.length); } testfun1("param0","param1","param2","param3"); //return: true param2,param3 2 在這里... arg表示一個(gè)名為arg的數(shù)組。當(dāng)運(yùn)行testfun1后,arg=["param2","param3"]。還記得function有個(gè)arguments 類(lèi)么,當(dāng)使用了...(rest)后,argumnets 就無(wú)法獲取了。但是如上例所示arg.length 同樣可以使用。但是并沒(méi)有類(lèi)似arguments.callee 的這種方法,所以要使用...arg的時(shí)候確保不會(huì)使用arguments.callee 的方法。
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2740982-1-1.html
出處:藍(lán)色理想
責(zé)任編輯:elesa
上一頁(yè) 下一頁(yè) 訪問(wèn)控制以及命名空間
◎進(jìn)入論壇Flash專欄版塊參加討論
|