隨筆 - 8  文章 - 55  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          朋友的Blog

          最新評論

          閱讀排行榜

          評論排行榜

          【黑羽】AS 3.0教程(2):AS3.0的類及綁定

          hi,鳥籠山的朋友們,這次我們開始介紹AS3.0中的類如何和庫中元件綁定,和特殊的Document Class設計。
          總共4步:
          1.建一個標準的AS3.0類 (暫命名為KingdaMC,多么偉大的名字啊,簡稱“有名”)
          2.新建一個元件,并設置它的Linkage和上面的類綁定。
          3.在時間軸上寫代碼,用AS3.0代碼創建n份“有名”。
          4.刪掉時間軸上代碼,使用Flash 9新特色Document Class在舞臺上創造n份“有名”。just 體驗一把。

          (寫起來才知道要講的內容多啊,暈,打了兩個小時,累了,本節專門只講講AS3.0的類吧,其余的慢慢再講)
          在創建AS3.0之前,請允許我先對AS3.0類的語法和繼承設計表示敬意。與標準的完全兼容,更好更嚴格的封裝特性,特別是命名空間(name space)的引入。從今天起從AS3.0起, 在OOP層面上,AS3.0已經和Java,C#平起平坐了,甚至在某些方面(比如name space)比java更有意思。

          讓俺對AS2.0老鳥說幾句憋在心里的激動之語:tongue.gif
          如果說AS2.0只是外表接近OOP標準語言,內在還是亂糟糟的AS1.0腳本語言,那么AS3.0不論是從OOP設計級別,還是從編譯器級別(如,對弱引用—— week reference—— 的支持)來評估的都是標準、正宗、強大的語言。

          從AS3.0起,我們ActionScript 開發者可以挺起胸口,俺們是真正的行業標準級程序員。

          在我繼續教程之前,我要唱首歌給大家聽:
          AS3的英明,絕對不是一句兩句能說清!~~~~~~biggrin.gif

          打完,收工。

          1.建立AS3.0類文件,
          類文件是干嘛用的?比如說,我們想讓一個對象(Object)有很多功能,比如說這個對象是MovieClip型的,支持拖拽,支持雙擊等等。那么先在一個類文件里寫清楚這些要求和實現方法,然后就可以用這個類創建許多實例,這些實例就全具有了這些功能。寫一次,就能用很多次,多好。最重要的是它還可以通過繼承來重用很多代碼,為將來節省更多的時間。

          廢話少說,Ctrl+N打開“新建”窗口,選擇建立“ActionScript file”,Ctrl+S,暫存為"KingdaMC.as"文件。(即“有名”的類文件)。

          輸入如下代碼:

          								
          //【黑羽】ActionScript 3.0系列教程(2)
          // http://www.kingda.org
          //代碼如下

          //package 見講解1
          package {
          import flash.display.MovieClip; //講解2
          import flash.events.MouseEvent;

          //講解3
          public class KingdaMC extends MovieClip {
          public function KingdaMC() {
          trace("Kingda created: " + this.name);

          this.buttonMode = true;
          this.addEventListener(MouseEvent.CLICK, clickHandler);
          this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
          this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
          }
          private function clickHandler(event:MouseEvent):void {
          trace("You clicked the ball");
          }
          function mouseDownListener(event:MouseEvent):void {
          this.startDrag();
          }
          function mouseUpListener(event:MouseEvent):void {
          this.stopDrag();
          }
          }
          }

          講解1: AS2.0中我們使用的是全飾名稱來聲明類,通俗說,包括了類的路徑在類名前。AS3.0則把路徑提取出放在package這個關鍵字后面。本文例子中的類文件和Fla文件在同一個目錄下,因此 package后面沒有什么東西。如果類文件在 org目錄下的kingda目錄里,那么就要寫成
          // ActionScript 2.0
          class org.kingda.KingdaMC {  
          }
          
          

          // ActionScript 3.0
          package org.kingda {
          public class KingdaMC {}
          }


          你在package中可以定義好幾個類,不用再寫全飾名稱了。但我不推薦這樣做。一個文件一個類比較好管理。

          講解2:
          MovieClip類再也不像AS2.0那樣是默認的全局類了。你要使用MovieClip類一定要寫這一句導入。

          講解3:
          類在AS3.0中也有public 和 internal的區分了。
          public 表示這個類可以在任何地方導入使用。
          internal表示這個類只能在同一個package里面使用。
          不寫,就默認為internal這個新的關鍵字。
          還有一個屬性是final,表示這個類不能被繼承了,繼承樹到此為止。
          說白了,這三個屬性都是用來讓我們更加規范的管理類之間的關系,以便將來修改時心里有譜,大大的方便了修改。

          同時,對架構的設計能力要求更高,新手們和小項目還是多使用public吧。越到后來你會越喜歡internal的。我只要看到internal和private這兩個關鍵字,心中就無比的穩定和舒服。想來不少programmer和我都會有同感吧。


          2.新建一個元件,并設置它的Linkage和上面的類綁定。
          和教程第一章一樣,畫一個方塊,按F8轉成MovieClip,再在庫中右鍵點擊它,選擇"linkage"

          2.gif
          點擊看大圖。

          在Class里面寫上KingdaMC。注意,id輸入框已經被廢止了。因為在AS3.0中,再也沒有MovieClip.attachMovie(), MovieClip.createEmptyMovieClip(), 以及 MovieClip.createTextField()的存在了。
          所有舞臺的可見對象都由new來創建。
          比如說本例中,symbol1綁定了KingdaMC,那么如果我要在舞臺上創建一個KingdaMC,只要寫


          var b1:Kingda = new KingdaMC();
          addChild(b1);

          即可。

          還記得以前那些亂七八糟的創建影片和組件的語法嗎?什么createClassObject(),DepthManager的createChildAtDepth(),createClassChildAtDepth(),等等等等。我的一個java同事剛剛學習AS時,被上面哪些亂亂的創建函數弄得一頭霧水。統統沒有了。只有一統天下的new ClassName(),多標準哪,多舒服啊,多好學啊。
          所以說,沒學AS2.0直接學AS3.0絕對是新手的福氣。

          第二句,addChild這個很重要。
          光有第一句new可不行。那只是告訴Flash我建了一個名字叫b1的KingdaMC要顯示,但還沒告訴Flash什么時候顯示呢。
          你什么時候打addChild(b1),那Flash才會把它顯示在舞臺上。怎么樣,多簡單。
          其實這里省略了一個this。如果你有一個MovieClip名叫BigKingda,希望在這個BigKingda里面加上一個KingdaMC實例,那么就要寫


          BigKingda.addChild(b1);

          非常簡單。

          Ctrl+Enter測試,發現創建的KingdaMC,支持拖拽。
          大家試著用代碼多創建幾個KingdaMC,比如用for循環來建個10個8個的來玩玩。

          好了,累了,要歇歇了,下次講Document Class。

          posted on 2006-07-02 00:21 blog搬家了--[www.ialway.com/blog] 閱讀(454) 評論(0)  編輯  收藏 所屬分類: AS2.0
          主站蜘蛛池模板: 石家庄市| 水富县| 左云县| 雅江县| 云和县| 九龙城区| 辽宁省| 友谊县| 尤溪县| 同江市| 富川| 抚顺县| 马龙县| 广元市| 金门县| 屏东县| 会同县| 介休市| 静宁县| 海伦市| 贺州市| 西乌| 巴彦县| 云安县| 安国市| 巢湖市| 五指山市| 剑川县| 安多县| 九寨沟县| 宾川县| 日土县| 高台县| 日喀则市| 永胜县| 富顺县| 石门县| 安阳市| 交口县| 陇西县| 东阳市|