四、免費(fèi)的就是最好的
下午文章剛一發(fā)表,就收到Flash Coders群里的朋友們的意見,認(rèn)為我所推薦的書籍《ActionScript權(quán)威指南》對于初學(xué)者來說,難度有些大了。的確,也許這本書并不完全適合于沒有任何編程基礎(chǔ)的初學(xué)者,我所以推薦這本書的主要原因是,它的講解足夠系統(tǒng)化,按部就班,而且充分利用代碼把很多容易混淆的概念分析的比較透徹,令人印象深刻。就像《Thinking in Java》,我從不認(rèn)為這本書適合于Java初學(xué)者閱讀(時(shí)至今日,盡管我自認(rèn)為已經(jīng)不算是Java初學(xué)者,但書中的很多內(nèi)容我仍然沒有能完全消化掉),但每當(dāng)有人問我有哪些優(yōu)秀的Java書籍時(shí),我總是第一個(gè)想到它。所以,我們或許可以把《ActionScript權(quán)威指南》當(dāng)作一本復(fù)習(xí)手冊,當(dāng)你對AS有了一個(gè)整體的印象之后,再捧起這本書,你也許會發(fā)現(xiàn)許多以往學(xué)習(xí)中的漏洞,或是一直盤繞在你心頭的疑惑驟然解開。
然而,究竟由誰來給你這個(gè)“整體的印象”?更為淺顯的書籍?入門培訓(xùn)課程?在這里我要說的是“免費(fèi)的就是最好的”,雖然這句話不適用于每一個(gè)角落,但在這里,F(xiàn)lash隨帶軟件附贈的幫助系統(tǒng)絕對可以勝任入門師傅這個(gè)角色。很多人小看了軟件的幫助系統(tǒng),認(rèn)為它們只不過是教你如何安裝,如何卸載,這真是一個(gè)天大的誤會,尤其當(dāng)你使用的是某種語言的IDE時(shí),這個(gè)誤會就更加夸張了。僅僅以Flash的幫助系統(tǒng)來說,已經(jīng)可以稱得上是一本Bible。初學(xué)者可以從中解決幾乎所有的問題!皫椭钡挠⑽氖荋elp,“救命”的英文也是Help,所以,如果你有在論壇發(fā)帖喊“救命”的時(shí)間,不如去抓住身邊這額棵救命稻草。更何況,論壇的帖子可能三天也沒有人回復(fù),而幫助系統(tǒng)則是隨叫隨到。:)
接下來的問題是,如何更好的使用幫助?
按照筆者的意見,一個(gè)完善幫助系統(tǒng)主要有兩個(gè)職能: 一、入門指導(dǎo)。二、工具書。 Flash的幫助系統(tǒng)很好的完成了這些工作。以Flash MX 2004的幫助系統(tǒng)為例,整個(gè)系統(tǒng)分成五個(gè)部分:Getting started with Flash,Using Flash,ActionScript Reference Guide,ActionScript Dictionary,Using Components,前兩部分基本上與ActionScript無關(guān),這里不與考慮。后三部分中,第三和第五部分便是最好的入門指導(dǎo),第四部分則是一部完整的AS字典,可以隨時(shí)查閱。對于Flash初學(xué)者來說,可以先忽略掉組件(Components)的部分,下面讓我們來看看ActionScript Reference Guide:第一章講了一些廢話,第二章也不是為初學(xué)者設(shè)計(jì),它概述了Flash MX到2004在AS方面的變化,有興趣的朋友可以看一下我的“2004新特性實(shí)例教程”。地址: m.95time.cn/bbs/newsdetail.asp?id=1177438&posts=current 而接下來的第三章:Flash基礎(chǔ),則是重中之重了。它從最基本的語法講起,先后涉及了數(shù)據(jù)類型,變量,函數(shù)等方面,在學(xué)習(xí)這些基礎(chǔ)知識的時(shí)候需要注意,要理解,不要記憶。如果當(dāng)你遇到某些問題,需要靠回憶來找到解決問題的辦法,則說明你沒有能夠真正的理解這個(gè)問題。如何加深理解?惟有多加練習(xí),不要嫌它們過于簡單,簡單的背后可能蘊(yùn)含著復(fù)雜的理念,即便是一個(gè)等號,也值得寫上幾十行程序來驗(yàn)證它在不同情況下所起的作用?傊热皇腔A(chǔ),對任何人來說都是一樣的,它不是那種需要發(fā)揮人類想象力和創(chuàng)造力的上層建筑。因此,實(shí)踐+總結(jié)是學(xué)習(xí)基礎(chǔ)知識的唯一途徑。當(dāng)你對AS基礎(chǔ)有了一個(gè)較為完整的掌握后,就可以向更高級的領(lǐng)域進(jìn)發(fā)了。
五、幾點(diǎn)你應(yīng)該知道的
學(xué)習(xí)基礎(chǔ)也是有竅門的,對于大部分概念來說,都相對符合人的思維邏輯,因此你可以輕易的理解它們,也不容易發(fā)生混淆;但對于初入編程世界的朋友們來說,仍有一些是規(guī)則是陌生的,甚至是難以理解的。這時(shí)候,你所要做的就是學(xué)習(xí)并接受它們,如果你不顧這些規(guī)則而隨意在這個(gè)世界中馳騁,我想編譯器一定會給你好看。 : ) 以下是我所總結(jié)的在學(xué)習(xí)編程基礎(chǔ)知識的時(shí)候你所應(yīng)該注意的要點(diǎn),有掛一漏萬之嫌,但至少頗具代表性?纯茨闶欠褚呀(jīng)熟練的掌握了它們:
1、標(biāo)識符規(guī)則:
這里的規(guī)則不僅僅指那些由編譯器老大管轄的條條框框:不能以數(shù)字開頭,可以包含數(shù)字、字母、下劃線、美元符號......等等。同樣也包含一些“民間”的約定,例如變量、函數(shù)命名以小寫字母開頭,類命名以大寫字母開頭,常量命名均使用大寫字母等等.....你不遵守這些約定,編譯器不會對你亮紅燈,但會造成你的程序可讀性下降。這樣我想起《thinking in java》的譯著作者侯捷先生,就是因?yàn)楹鲆暳舜箨懽x者的閱讀習(xí)慣,自創(chuàng)了一些生澀的詞匯,結(jié)果被很多讀者以此為借口拋擲雞蛋(當(dāng)然我明白更主要的原因是大多數(shù)讀者嫌這本書實(shí)在太貴了: )。
2.=與==
如果你正在讀小學(xué)一年級,你可以告訴我“=”與“==”的區(qū)別就是一個(gè)等號和兩個(gè)等號的區(qū)別,但作為一個(gè)程序員,你應(yīng)該理解它們從根本上不是一類事物,“=”是賦值運(yùn)算符,而“==”是比較運(yùn)算符。所以不要再問我if(a=b) a=1;這樣的代碼為什么不對。但我承認(rèn),在剛開始接觸程序的時(shí)候(c語言),我也犯過不少次這樣的錯(cuò)誤,而且很長時(shí)間找不到問題所在,等到發(fā)現(xiàn)了錯(cuò)誤,又總是自責(zé)自己為什么會如此愚蠢。我現(xiàn)在特別提醒你注意這一點(diǎn),如果仍然犯下這樣的錯(cuò)誤,那只能說明你比我更加愚蠢。:)
3.運(yùn)算符優(yōu)先級
一個(gè)經(jīng)常被人忽視的問題!的確,它可以通過另一種方式來完全避免優(yōu)先級帶來的困擾,那就是頻繁的使用“()”,通過“()”來決定你每一步的運(yùn)算順序。只要你不怕麻煩,你完全可以這么做,而且也增加了程序的可讀性。但不是所有的人都喜歡這樣,一個(gè)老資格的程序員通常愿意在一大長串表達(dá)式中使用數(shù)個(gè)優(yōu)先級各不相同的運(yùn)算符且不包含任何的小括號,這種情況就是對你對運(yùn)算符優(yōu)先級的掌握的一個(gè)考驗(yàn)了。但不管怎么說,使用“()”來明確你的運(yùn)算順序并不是一件壞事,甚至值得推薦。
4.i++與++i
我在前面的文章中就已經(jīng)提到這個(gè)問題,盡管現(xiàn)在看起來簡單無比,但當(dāng)時(shí)的確給我們帶來了一些困擾,這個(gè)問題也是非常普遍的。充分理解它的方法就是寫幾個(gè)包含i++和++i的表達(dá)式,然后觀察表達(dá)式的運(yùn)算結(jié)果及i的值。很快,這對于你來說將不再是個(gè)問題。
5.數(shù)據(jù)類型轉(zhuǎn)換
你可能不經(jīng)常用到數(shù)據(jù)類型轉(zhuǎn)換,但你至少該知道它們的原理,那些轉(zhuǎn)換是隱式的,而那些轉(zhuǎn)換必須顯式地進(jìn)行,而且有可能造成數(shù)據(jù)的損壞。了解了這些,可以讓你避免一些奇怪的錯(cuò)誤。因?yàn)橥ǔS蓴?shù)據(jù)類型轉(zhuǎn)換所帶來的程序問題很難被覺察到。
6.數(shù)組
嚴(yán)格的說,數(shù)組不是一種數(shù)據(jù)類型,而是一種數(shù)據(jù)結(jié)構(gòu)。這是一個(gè)值得你認(rèn)真研究的概念。因?yàn)樵趯?shí)際應(yīng)用中,數(shù)組的使用率大大超過其他集合類型甚至是某些原始類型。你需要了解構(gòu)造和初始化數(shù)組的各種有效的格式,同時(shí)也應(yīng)該對二位數(shù)組有所了解。數(shù)組與循環(huán)控制的配合可能已經(jīng)可以一個(gè)完整的程序中一半的工作。
六、初學(xué)者應(yīng)該學(xué)習(xí)AS1.0還是AS2.0?
這個(gè)問題同樣人氣很旺,頻繁的出現(xiàn)在論壇的角落里,然后就會有“一群”(原諒我使用這個(gè)詞)終年未見發(fā)過一貼的潛水員們浮上岸來指手畫腳一番,然后又匆匆前入水底,我不知道是否只有這種頗具爭議性的話題才能請他們“高抬貴手”,表達(dá)出他們各自的偉大構(gòu)想,但是,在談?wù)撨@個(gè)話題之前,確實(shí)讓我覺得的很為難,因?yàn)橐氚训牧霰磉_(dá)清楚,我不得不提及很多對于初學(xué)者來說可能為所未聞的術(shù)語,例如原型、繼承、接口等等。我的目的只是想闡述AS1.0和AS2.0的區(qū)別,以便推出自己對這個(gè)問題的結(jié)論。最后,我還是決定無視那些術(shù)語的存在,直接給出結(jié)論,如果你不能夠信服,請你在實(shí)踐中去驗(yàn)證好了。: )
我的結(jié)論是:AS2.0與AS1.0從本質(zhì)上完全相同,但AS2.0比AS1.0更加的嚴(yán)格,更加的合理,更加像一種真正的面向?qū)ο笳Z言。然而,如果你打算直接學(xué)習(xí)AS2.0,那么你不得不在面對一堆陌生的API的同時(shí),還要去理解你可能從未接觸過的面向?qū)ο缶幊汤砟睢_@對一些初學(xué)者可能是災(zāi)難性的,因?yàn)樗麄兛赡鼙惶嗟奈粗蛩厮鶉樀埂?/P>
因此,我的建議是:以AS2.0的語法規(guī)范去學(xué)習(xí)AS1.0。
它意味著:你應(yīng)該先忽視AS2.0中與自定義類、接口有關(guān)的一切,只關(guān)注Flash提供的API,但同時(shí)你需要遵守AS2.0所引入的新的語法規(guī)范,包括強(qiáng)類型、大小寫敏感等等。這樣做的好處有兩個(gè): 一、初學(xué)者不會同時(shí)面對API與設(shè)計(jì)理念的困擾, 二、習(xí)慣了AS2.0的語法規(guī)范為今后由AS1.0向AS2.0轉(zhuǎn)型打好基礎(chǔ)。 (很多人問到為什么在Flash MX中執(zhí)行的好好的程序到了Flash MX 2004中出了問題?這就是你沒有注意到AS2.0的語法規(guī)范起了變化)。
可能有的朋友會問,既然AS1.0與AS2.0本質(zhì)上是相同的,那么為什么我們在學(xué)習(xí)AS1.0前不用可以的去學(xué)習(xí)面向?qū)ο笏枷肽兀窟@是因?yàn)椋篈S1.0的設(shè)計(jì)思想中,包含了面向?qū)ο蠛兔嫦蜻^程兩個(gè)分支,這兩個(gè)分支是“交叉”的。而在大多數(shù)AS1.0的程序設(shè)計(jì)中,我們相對重視它的面向過程的那個(gè)分支,而面向?qū)ο蟮姆种t被Flash本身的機(jī)制(以MovieClip為核心)巧妙的、隱式的實(shí)現(xiàn)了。我知道很多人看到這里會暈,別擔(dān)心,我將陸續(xù)在我的連載中給大家一個(gè)滿意的解釋。
出處:藍(lán)色理想
責(zé)任編輯:qhwa
上一頁 給所有AS初學(xué)者的建議 [1] 下一頁 給所有AS初學(xué)者的建議 [3]
◎進(jìn)入論壇Flash專欄版塊參加討論
|