AS2.0的私有,公有成員,類繼承和as嵌套_Flash教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:Flash 2004 MX Components
      1.0UIObject.createObject();作用:創(chuàng)建一個組件對象用法:componentInstance.createObject(linkageName,instanceName,depth,initObject)例子:在這個A

      AS2.0和JAVA.C#一樣.也運用OOP模式.哪它一定就有繼續(xù).子類父類超類的分別.學(xué)過
      JAVA,C#的人很快就能理解.

      這里說的類繼續(xù)指一個class類能夠繼續(xù)另一個class類的全部方法和屬性.在說AS2.O的
      類繼續(xù)方法前.先說一下什么是.private(私有性成員)和public(公有性成員)

      AS2.0建立在class中的所有變量,方法,屬性默認都是公有性的.我們當然也可以定義為私有
      性的.比如一個變量.或方法.我并不想在FLA文件中用到.而只是在class類中作為一個函數(shù)或
      私有方法為這個class文件所用.就要用到private 定義為私有性

      舉例:


      建立一個名為test_private.as的class類文件:


      class test_private
      {

      private var tmp1:String; //聲明tmp為私有變量

      public var tmp2:String; //不加public默認都為公有變量

      function test_private()
      {
      tmp1 = "私有變量"; //賦值

      tmp2 = "公有變量";

      }

      }


      然后你在fla文件Layer1中調(diào)用這個class


      var myclass:test_private = new test_private();
      trace("tmp1=" myclass.tmp1);
      trace("tmp2=" myclass.tmp2);


      將會出現(xiàn)檢測到一個私有成員不能被防問的錯誤.指向在tmp1這個private變量上.

      現(xiàn)在我們把fla里的代碼改一下再運行:



      var myclass = new test_private();
      trace("tmp1=" myclass.tmp1);
      trace("tmp2=" myclass.tmp2);



      這次運行通過.顯然區(qū)別就在于.定義class對象時假如定義引用class類的 type 類形,FLASH
      將會檢測到類中哪些為公有性和私有性的成員.我們也可以把方法.自定義函數(shù)定義成為類私有成員;這樣做的好處.私有成員不會被前臺調(diào)用.也防止一些變量或函數(shù)方法的被惡意
      調(diào)用.


      下面說的是類繼續(xù):

      比如說.我建立的一個類的方法,屬性,變量想被別一個class調(diào)用.而我又不想在另一個類中
      重復(fù)寫代碼.就要用到繼續(xù).再比如說一個類在flash運行中.行到一個動態(tài)的變量.而我的另
      一個類文件運行時想調(diào)用這個動態(tài)的變量.就要給這兩個類文件建立一個關(guān)系.
      說簡單點:父類與子類關(guān)系.或者是爺爺類,父類.子類關(guān)系.他們都有一些相同的特性.而自
      己本身也可以有自己的特性.相同的特性都可以使用.

      舉例:
      建立一個fla文件.一個名為txt的文本框.一個名為square的方塊mc,兩個按鈕

      //建立一個test1.as的類文件
      class test1
      {
      private var hide_txt:String;
      private var show_txt:String;

      private function hide_sq()
      {
      _root.square._visible = false;
      }
      private function show_sq()
      {
      _root.square._visible=true;
      }
      }


      他有兩個私有方法,和兩個私有String變量,作用是顯示和隱蔽MC square;
      建立一個test2.as的類文件,我們要用這個類文件繼續(xù)test1.as的所有成員



      class test2 extends test1
      {
      function test2()
      {
      hide_txt = "隱藏"; //繼續(xù)了test1的變量,我們可以給他賦值
      show_txt="顯示";


      }


      }



      現(xiàn)在我們在fla中調(diào)用test2.as的繼續(xù)類來實現(xiàn)test1.as中的方法;


      在一個button上的as中寫入以下代碼,用來隱藏和顯示信息

      on (release) {
      var myclass= new test2();
      myclass.hide_sq(); //繼續(xù)了test1.as中的方法
      txt.text = myclass.hide_txt;
      //這是在test2.as中賦值的test1.as中的變量,說明繼續(xù)之后變更為自己的特性
      }


      在另一個button上AS中寫上以下:



      on (release) {
      var myclass = new test2();
      myclass.show_sq();
      txt.text = myclass.show_txt;
      }




      我們還可以在test1.as中加入新的方法.既可作為獨立的類同樣也是一個繼續(xù)類.

      說完繼續(xù)類.再來說as文件嵌套.在flashmx中曾用到過#include "filename.as"
      方式.假如用Flash Remoting就要引用 #include "NetDebug.as"等文件.
      其實.很象繼續(xù)類.在一個as文件嵌套引用另一個as文件中的方法.
      但是flash mx 2004中,as文件嵌套和繼續(xù)類寫法不一樣.
      舉例:

      建立test3.as文件如下:


      var hide_txt:String;
      var show_txt:String;

      function hide_sq()
      {
      _root.square._visible = false;
      }
      function show_sq()
      {
      _root.square._visible=true;
      }


      建立test4.as文件如下:

      class test4
      {
      #include "test3.as"
      //這里引用test3.as文件.注重沒(;)號結(jié)尾不然會出現(xiàn)一個語法錯誤

      function test4()
      {
      hide_txt = "隱藏";
      show_txt="顯示";

      }

      }


      很顯然.test3.as不是一個clas類文件.而只是一個包含自定義函數(shù)變量的
      as文件.假如你加上clas{}變?yōu)轭愇募?#include不能包含定義成類的as文
      件.下面使用嵌套的test4.as類文件;在兩個BUTTON上加入以下代碼.同上
      面差不多.



      on (release) {
      var myclass:test4 = new test4();
      myclass.show_sq()
      txt.text = myclass.show_txt;
      }


      on (release) {
      var myclass:test4= new test4();
      myclass.hide_sq()
      txt.text = myclass.hide_txt;
      }



      顯然test4.as類文件一樣也能引用嵌套進來的as文件中的變量和自定義函數(shù);
      你也可以嵌套進多個as文件,這與類繼續(xù)有點不一樣.


      AS2.0比起1.0相對靈活多了.同樣.對coder的要求也高了.相信以后Designer
      和coder將會分工了.

      分享:為AS2.0添磚加瓦-編寫類擴展(4)
      mc的雙擊事件1、建立CPoweredByXiaowu.as:classCPoweredByXiaowuextendsMovieClip{//--------------------------------------------------------------

      來源:設(shè)計前沿網(wǎng)上收集//所屬分類:Flash教程/更新時間:2008-03-05
      相關(guān)Flash教程