初識(shí)AS3.0 學(xué)習(xí)AS3.0已有一段時(shí)間了,想把自已對(duì)AS3的一些認(rèn)識(shí)和大家分享一下。主要想說(shuō)說(shuō)AS3與AS2的不同之處,沒(méi)有什么邏輯性,想到什么就寫(xiě)點(diǎn)什么,因此,它不適合AS高手們閱讀。本文將力求用最直白的語(yǔ)言,盡量不用那些艱澀難懂的名詞和術(shù)語(yǔ)。 一、在什么地方寫(xiě)代碼 失望,以為要說(shuō)點(diǎn)啥,原來(lái)是這么小兒科的問(wèn)題。沒(méi)辦法,我說(shuō)過(guò)了,本文不適合AS高手閱讀的。為了更好地理解,我們還是用例子來(lái)說(shuō)明?,F(xiàn)在,就讓我們一起來(lái)回顧一下,在AS2中我們都會(huì)把代碼寫(xiě)在什么地方。我們?cè)贏S2中建一新文檔,新建一個(gè)影片剪輯元件取名為bt,元件很簡(jiǎn)單,隨便畫(huà)一個(gè)方塊就行,你說(shuō)我偏要畫(huà)一個(gè)園,那當(dāng)然隨你高興羅,我沒(méi)意見(jiàn)。然后,在場(chǎng)景中,用文字工具建一文本框,設(shè)為動(dòng)態(tài)文本框,實(shí)例名稱(chēng)命名為:text1,將元件bt從庫(kù)中拖到舞臺(tái)上,實(shí)例名稱(chēng)命名為:bt_mc.現(xiàn)在寫(xiě)代碼,想一想,代碼寫(xiě)在什么地方,我們來(lái)做下面三個(gè)測(cè)試: 測(cè)試一:在幀動(dòng)作中,直接寫(xiě)代碼,點(diǎn)中第一層,第一幀,然后打開(kāi)動(dòng)作面板,在上面寫(xiě)到: 測(cè)試二:還在幀動(dòng)作中寫(xiě)代碼,將代碼改為: 測(cè)試三:好象還可以把代碼寫(xiě)到元件上,清除幀動(dòng)作中的代碼,點(diǎn)中bt_mc,打開(kāi)動(dòng)作面板,寫(xiě)下如下代碼: 它怎么老是執(zhí)行了呢,真是的。 下面我們?cè)贏S3中,作相同的測(cè)試: 測(cè)試一、在測(cè)試影片時(shí),我們還是看到了那幾個(gè)字,它都又執(zhí)行了。 測(cè)試二、在測(cè)試影片時(shí),哈哈,出錯(cuò)了,為我們出錯(cuò)喝彩吧(有?。。鲥e(cuò)了,說(shuō)明AS3與AS2還是不一樣,那么本文就還可以寫(xiě)下去了。 測(cè)試三、當(dāng)我們點(diǎn)中bt_mc,然后打開(kāi)動(dòng)作面板時(shí),我們看到的是: 好了,測(cè)試做完了,所謂實(shí)踐出真知,通過(guò)測(cè)試,我們可以得出如下結(jié)論: 二、AS3中的事件偵聽(tīng) 看到這里,聰明的你一定會(huì)說(shuō),在AS3中做上面的測(cè)試二時(shí),代碼是寫(xiě)在幀動(dòng)作中的啊,為什么會(huì)出錯(cuò)呢?是啊,正因?yàn)橛心愕穆斆?,才使本文可以繼續(xù)寫(xiě)下去啊。 在AS2中我們?cè)谧尦绦蝽憫?yīng)一個(gè)事件,比如鼠標(biāo)單擊,我們可以在幀動(dòng)作中這樣寫(xiě): 在AS3中,就不能這樣寫(xiě)了,所以上面的測(cè)試二就出錯(cuò)了。 在AS3中,你必須先聲明一個(gè)函數(shù),其中包含你要執(zhí)行的語(yǔ)句,然后用事件對(duì)象來(lái)偵聽(tīng)事件并調(diào)用這個(gè)函數(shù),這將用到事件偵聽(tīng)語(yǔ)句:addEventListener 無(wú)論何時(shí)編寫(xiě)事件偵聽(tīng)器代碼,該代碼都會(huì)采用以下基本結(jié)構(gòu)(以粗體顯示的元素是占位符,您將針對(duì)具體情況對(duì)其進(jìn)行填寫(xiě)): 我想還是用測(cè)試二,來(lái)說(shuō)明好理解一些: 上述代碼中的事件類(lèi)型是:鼠標(biāo)事件(MouseEvent),事件名稱(chēng)是:?jiǎn)螕簦–LICK)。 你又要說(shuō)話了,“這不是更麻煩嗎?”,是有點(diǎn)麻煩哈,不過(guò)據(jù)說(shuō)是更規(guī)范,更利于代碼維護(hù),不過(guò)不管你愿不愿意,你要用AS3你就得這么寫(xiě)。 三、添加顯示對(duì)象 這一節(jié),來(lái)說(shuō)說(shuō)顯示對(duì)象。顯示對(duì)象?啥玩眼,你不是說(shuō)不用專(zhuān)業(yè)術(shù)語(yǔ)嗎?這個(gè)簡(jiǎn)單,你在舞臺(tái)上能看到的東西就叫顯示對(duì)象。你說(shuō)顯示對(duì)象是咋個(gè)到舞臺(tái)上去的呢?你傻哦,當(dāng)然是放上去的啰。那它是咋個(gè)放上去的呢?當(dāng)然是用鼠標(biāo)放上去麻。那只有用鼠標(biāo)才能放上去嗎?那不一定,我還以用attachMovie從庫(kù)里頭加載一個(gè),我也可以用duplicateMovieClip復(fù)制一個(gè),高興了,我還可以用代碼畫(huà)一個(gè),我還可以用loadMovie導(dǎo)入一個(gè)外部文件。你耐我何?真的嗎?你敢不敢試一下嗎?試就試,誰(shuí)怕誰(shuí)? 先試attachMovie:在AS3中在幀動(dòng)作中寫(xiě)如下代碼: 還在那寫(xiě)文章,要加載庫(kù)里的元件,必須要在元件的鏈接屬性中為元件指定標(biāo)識(shí)符,這一步你都不曉得?是哈,咋把這一步給忘了,趕緊去設(shè)置,在庫(kù)中,bt原件上單擊右鍵,點(diǎn)鏈接,選中“ActionSpript導(dǎo)出“,再看”標(biāo)示符“那一欄,不能用!你能干,你來(lái)設(shè)麻。 其實(shí),在AS3中根本就沒(méi)有attachMovie這一說(shuō)。 畫(huà)一個(gè)?畫(huà)麻:將代碼改為: 1. createEmptyMovieClip("bt1",0); 測(cè)試影片,還是出錯(cuò)了。而這幾句代碼在AS2中會(huì)畫(huà)出一個(gè)紅色的三角形。 還是來(lái)做個(gè)實(shí)例吧,我=第(一N課]件網(wǎng)們將庫(kù)中的bt元件,加載到舞臺(tái)上: 首先我們?cè)趲?kù)中,在bt元件上,點(diǎn)右鍵-鏈接,選中,“為ActionScript導(dǎo)出“,這時(shí)”類(lèi)“和”基類(lèi)“兩欄均變?yōu)榭捎?。這樣,就在Flash.display.MovieClip類(lèi)中創(chuàng)建了一個(gè)”bt"類(lèi)。點(diǎn)擊確定,在接下彈出的對(duì)話框中,再點(diǎn)確定,就行了。現(xiàn)在我們可以在代碼中加載bt了 var bt1:bt = new(bt); //聲明一個(gè)新的bt類(lèi)的實(shí)例,并用new()來(lái)構(gòu)造它 this.addChild(bt1); //將bt1載到舞臺(tái) bt1.x =200; bt1.y=300; //設(shè)置bt1的x,y值,注意在AS3中,x和y前而沒(méi)有下劃線了。 測(cè)試影片,bt已加載到舞臺(tái)上了。 下面我們?cè)贏S3中畫(huà)一個(gè),代碼這樣寫(xiě): 1. bt1.graphics.beginFill(0x00FF00);//以下的代碼是用graphics畫(huà)三角形。 在AS3中,除了MovieClip類(lèi)外,還可以用Shape、Sprite 類(lèi)來(lái)繪圖或加載顯示對(duì)象,而且還要更節(jié)約系統(tǒng)資源一些。 加載外部顯示對(duì)象,在AS3中,利用Loader類(lèi)來(lái)加載外部對(duì)象;同樣的也要先聲明一個(gè)Loader類(lèi)實(shí)例: 1. var loadpict:Loader = new(Loader); 好了,暫時(shí)寫(xiě)這么多,如果想起了什么,再補(bǔ)充。 |
|