掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
學(xué)習(xí)一門(mén)技術(shù),比較系統(tǒng)的途徑仍然是書(shū)籍。然而教程書(shū)籍有時(shí)提供的范例并沒(méi)有推薦良好的編程習(xí)慣,使讀者走了不少的彎路。7yue這篇博文便是就ActionScript3編程書(shū)籍的一些常見(jiàn)情況來(lái)描述這一問(wèn)題。

現(xiàn)在開(kāi)始接觸ActionScript3編程的愛(ài)好者越來(lái)越多,他們可以選擇從不同的角度來(lái)學(xué)習(xí)ActionScript3編程:書(shū)籍,教程,博客,開(kāi)放源碼項(xiàng)目等等。我最近發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象,就是AS3的部分教程中都存在一個(gè)小問(wèn)題,就是當(dāng)面向初學(xué)者提供某些范例和教程時(shí),這些內(nèi)容并未從良好的編程經(jīng)驗(yàn)或者是習(xí)慣入手,而是寄期望于日后的學(xué)習(xí)中,再了解更好的,更加值得使用的方法,我在想,為什么很多教程或文章不能一開(kāi)始就提供***實(shí)踐相關(guān)的內(nèi)容給愛(ài)好者呢?這樣,既提高了學(xué)習(xí)的效率,也減少了學(xué)習(xí)的彎路。
比如,下列的一小段代碼出自某本O'Reilly的書(shū)籍
書(shū)中這段代碼目的是讓開(kāi)發(fā)者了解AS3在SWF中的處理優(yōu)先級(jí)是大于可視化效果的,于是,就先用這樣的一段代碼來(lái)說(shuō)明:
- for (var i:int = 0; i<50; i++){
- myClip.x+=2;
- }
這段代碼為了說(shuō)明在循環(huán)中,MC的位置根本就不會(huì)按照f(shuō)or循環(huán)一樣,呈現(xiàn)x坐標(biāo)的遞加,而是直接跳轉(zhuǎn)到***循環(huán)結(jié)束時(shí)x坐標(biāo)的位置上去,這其實(shí)沒(méi)什么問(wèn)題,但是下面的代碼,則是說(shuō),開(kāi)發(fā)者可以使用Event.ENTER_FRAME事件來(lái)觸發(fā)一個(gè)偵聽(tīng)函數(shù),在偵聽(tīng)函數(shù)中處理一個(gè)MC的移動(dòng)。
- myClip.addEventListener(Event.ENTER_FRAME,slideClip);
- function slideClip(evt:Event):void{
- if (myClip.x <100){
- myClip.x += 2;
- } else {
- myClip.removeEventListener(Event.ENTER_FRAME,slideClip);
- }
- }
開(kāi)發(fā)者在學(xué)習(xí)這段代碼的時(shí)候,尤其是初學(xué)者,就對(duì)Event.ENTER_FRAME有了深刻的印象,于是乎,隨著他的學(xué)習(xí)曲線,以后對(duì)于AS3中對(duì)于MC的動(dòng)態(tài)處理,他們自然而然的就會(huì)不斷的用到ENTER_FRAME,甚至于不斷的將各種處理機(jī)制都放入其中。結(jié)果顯而易見(jiàn),大量的應(yīng)用性能和靈活性問(wèn)題隨之而來(lái),或許在若干長(zhǎng)的時(shí)間過(guò)后,才聽(tīng)到有講座說(shuō),ENTER_FRAME是一個(gè)不推薦的編程方式,更推薦大家用Timer云云之類的說(shuō)法。
這些類似的教程內(nèi)容本身沒(méi)有什么錯(cuò),為了演示一個(gè)功能或特點(diǎn),使用了最容易實(shí)現(xiàn)的方法來(lái)說(shuō)明問(wèn)題,如果這是一個(gè)售前工程師的工作,那么這種方式是***的,如果是面向讀者和學(xué)習(xí)的人,這種方法是粗心的,不考慮學(xué)習(xí)成本和效率的,因?yàn)樗苯訉?dǎo)致了開(kāi)發(fā)者的常用編程方式,直到開(kāi)發(fā)者積累了一定的經(jīng)驗(yàn),抑或是付出了一定的代價(jià)之后,才會(huì)發(fā)現(xiàn)有更好的方式,更加的性能來(lái)實(shí)現(xiàn)同樣的結(jié)果。所以,如果寫(xiě)書(shū)或者是教程,我覺(jué)的更好的一點(diǎn)是多考慮一下學(xué)習(xí)者的成本和曲線,不要為了達(dá)到目的,而讓學(xué)習(xí)者獲取了一個(gè)實(shí)際并不可取的方法。
記得以前我就發(fā)現(xiàn)過(guò)這樣的問(wèn)題,在MSDN上,存在著大量的代碼和范例,結(jié)果用到后來(lái),才發(fā)現(xiàn)是不好的和有很大代價(jià)的內(nèi)容,我就在想,為啥不能在我學(xué)習(xí)的時(shí)候就告訴我一個(gè)更好的方法呢?

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流