自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從ActionScript3編程書籍中的ENTER_FRAME說起

開發(fā) 后端
ActionScript3編程的書籍也不少了,但即使是O'Reilly的書籍,其中也有一些“誤導(dǎo)”讀者的內(nèi)容在內(nèi):它們并沒有從一開始就倡導(dǎo)良好的編程習(xí)慣。本文借常見的ENTER_FRAME事件來說明這一問題。

學(xué)習(xí)一門技術(shù),比較系統(tǒng)的途徑仍然是書籍。然而教程書籍有時(shí)提供的范例并沒有推薦良好的編程習(xí)慣,使讀者走了不少的彎路。7yue這篇博文便是就ActionScript3編程書籍的一些常見情況來描述這一問題。

現(xiàn)在開始接觸ActionScript3編程的愛好者越來越多,他們可以選擇從不同的角度來學(xué)習(xí)ActionScript3編程:書籍,教程,博客,開放源碼項(xiàng)目等等。我最近發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象,就是AS3的部分教程中都存在一個(gè)小問題,就是當(dāng)面向初學(xué)者提供某些范例和教程時(shí),這些內(nèi)容并未從良好的編程經(jīng)驗(yàn)或者是習(xí)慣入手,而是寄期望于日后的學(xué)習(xí)中,再了解更好的,更加值得使用的方法,我在想,為什么很多教程或文章不能一開始就提供***實(shí)踐相關(guān)的內(nèi)容給愛好者呢?這樣,既提高了學(xué)習(xí)的效率,也減少了學(xué)習(xí)的彎路。

比如,下列的一小段代碼出自某本O'Reilly的書籍

書中這段代碼目的是讓開發(fā)者了解AS3在SWF中的處理優(yōu)先級(jí)是大于可視化效果的,于是,就先用這樣的一段代碼來說明:

  1. for (var i:int = 0; i<50; i++){  
  2.   myClip.x+=2;  
  3. }  

這段代碼為了說明在循環(huán)中,MC的位置根本就不會(huì)按照for循環(huán)一樣,呈現(xiàn)x坐標(biāo)的遞加,而是直接跳轉(zhuǎn)到***循環(huán)結(jié)束時(shí)x坐標(biāo)的位置上去,這其實(shí)沒什么問題,但是下面的代碼,則是說,開發(fā)者可以使用Event.ENTER_FRAME事件來觸發(fā)一個(gè)偵聽函數(shù),在偵聽函數(shù)中處理一個(gè)MC的移動(dòng)。

  1. myClip.addEventListener(Event.ENTER_FRAME,slideClip);  
  2. function slideClip(evt:Event):void{  
  3.   if (myClip.x <100){  
  4.     myClip.x += 2;  
  5.   } else {  
  6.     myClip.removeEventListener(Event.ENTER_FRAME,slideClip);  
  7.   }  
  8. }  
  9.  

開發(fā)者在學(xué)習(xí)這段代碼的時(shí)候,尤其是初學(xué)者,就對(duì)Event.ENTER_FRAME有了深刻的印象,于是乎,隨著他的學(xué)習(xí)曲線,以后對(duì)于AS3中對(duì)于MC的動(dòng)態(tài)處理,他們自然而然的就會(huì)不斷的用到ENTER_FRAME,甚至于不斷的將各種處理機(jī)制都放入其中。結(jié)果顯而易見,大量的應(yīng)用性能和靈活性問題隨之而來,或許在若干長的時(shí)間過后,才聽到有講座說,ENTER_FRAME是一個(gè)不推薦的編程方式,更推薦大家用Timer云云之類的說法。

這些類似的教程內(nèi)容本身沒有什么錯(cuò),為了演示一個(gè)功能或特點(diǎn),使用了最容易實(shí)現(xiàn)的方法來說明問題,如果這是一個(gè)售前工程師的工作,那么這種方式是***的,如果是面向讀者和學(xué)習(xí)的人,這種方法是粗心的,不考慮學(xué)習(xí)成本和效率的,因?yàn)樗苯訉?dǎo)致了開發(fā)者的常用編程方式,直到開發(fā)者積累了一定的經(jīng)驗(yàn),抑或是付出了一定的代價(jià)之后,才會(huì)發(fā)現(xiàn)有更好的方式,更加的性能來實(shí)現(xiàn)同樣的結(jié)果。所以,如果寫書或者是教程,我覺的更好的一點(diǎn)是多考慮一下學(xué)習(xí)者的成本和曲線,不要為了達(dá)到目的,而讓學(xué)習(xí)者獲取了一個(gè)實(shí)際并不可取的方法。

記得以前我就發(fā)現(xiàn)過這樣的問題,在MSDN上,存在著大量的代碼和范例,結(jié)果用到后來,才發(fā)現(xiàn)是不好的和有很大代價(jià)的內(nèi)容,我就在想,為啥不能在我學(xué)習(xí)的時(shí)候就告訴我一個(gè)更好的方法呢?

【編輯推薦】

  1. Adobe進(jìn)軍云計(jì)算 Flash云平臺(tái)服務(wù)推出
  2. Adobe 18億美元收購軟件商Omniture 抑制銷售下滑
  3. Google或因收購On2與Adobe反目
  4. Adobe向開發(fā)者社區(qū)開源兩項(xiàng)目
  5. Flash Builder能否為Adobe贏得RIA之戰(zhàn)
責(zé)任編輯:yangsai 來源: 7yue的博客
相關(guān)推薦

2021-03-17 09:51:31

網(wǎng)絡(luò)編程TCP網(wǎng)絡(luò)協(xié)議

2024-06-28 09:25:51

2011-06-07 10:33:11

Android Activity

2020-12-09 05:28:22

語言Charj代碼

2010-09-16 10:46:47

2012-03-19 21:06:52

Android

2018-02-27 12:41:21

Serverless邊緣計(jì)算存儲(chǔ)

2012-03-13 16:16:39

AdobeAIR for TV

2018-11-30 11:19:02

DNS根服務(wù)器網(wǎng)絡(luò)

2011-12-15 22:13:30

手機(jī)平板電腦移動(dòng)互聯(lián)

2010-11-24 11:15:40

Qualcomm實(shí)施云計(jì)算

2013-03-25 11:11:37

編程語言編程語言書籍編程語言書

2010-05-05 09:52:06

Unix BSD

2010-05-24 17:23:41

Linux SNMP

2013-01-30 10:28:06

閱讀方法編程書籍程序員

2018-10-07 23:20:17

物聯(lián)網(wǎng)LPWANIOT

2009-08-28 11:03:21

C#快速排序

2010-08-17 17:01:14

華為認(rèn)證

2009-02-12 16:31:39

Windows7貝塔版本號(hào)

2022-09-28 08:23:56

AI人工智能工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)