最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從基礎開始深入學Flash AS3教程(7)(譯文)

互聯網   發(fā)布時間:2008-10-06 01:25:56   作者:佚名   我要評論
17,一個文件中的多個類 一般來說,一個.as文件中就一個類,但是在AS3中,現在允許在一個文件中定義多個類用來輔助主類。 在.as文件中的輔助類,必須定義在類包以外,并且只針對此文件中的主類和其他輔助類可見。 例如: package { class MyClass { function M
17,一個文件中的多個類
一般來說,一個.as文件中就一個類,但是在AS3中,現在允許在一個文件中定義多個類用來輔助主類。
在.as文件中的輔助類,必須定義在類包以外,并且只針對此文件中的主類和其他輔助類可見。
例如:

package {
class MyClass {
function MyClass() {
var helper:MyHelper = new MyHelper();
}
}
}
class MyHelper {
function MyHelper() {
var helper:HelpersHelper = new HelpersHelper();
}
}
class HelpersHelper {
function HelpersHelper () {
}
}
注意,在包塊中最多只能定義一個類。在同一個文件中的輔助類不是包塊的一部分,并且只能在此文件中可見和被使用。
18,訪問屬性
AS3為類和類成員引入了兩個新的訪問屬性來擴展AS2中的private訪問屬性。在AS3中,現在有下面的訪問控制屬性:

public
protected
private
internal (默認)
public:public屬性和AS2中一樣。在任何地方定義的public屬性,能在任何地方和被任何成員引用。
構造器必須定義成public。
應用程序類必須是public的。
protected:protected是一個新的屬性。被protected指定的成員,只能被其本身或其子類訪問。如果外部類嘗試訪問被protected的成員,將會拋出編譯錯誤。
類和構造器不能被聲明為protected。
private:AS2中已經有private屬性,但是在AS2中,子類成員可以任意的訪問父類的private成員?,F在在AS3中,private屬性只能在類內部被訪問,其他類包括子類都不能直接訪問此成員。也就是說,在子類中可以定義一個名稱和父類某成員名稱一樣的成員,只要父類的此成員是聲明為private的。
類和構造器不能被定義為private。
internal:internal和public比較類似,不同的地方在于類成員只能被同一個包中的成員所訪問,而其他包中的成員不能訪問。
internal是除了構造器以外的所有類和類成員的默認聲明。
輔助類的訪問控制有所不同。由于輔助類不屬于任何包,internal的聲明將限制其被訪問只能是當前文件之內。注意:主類不能繼承輔助類,只有輔助類能繼承輔助類,并且要在同一個文件內。
訪問控制的錯誤,并不僅僅是編譯時錯誤,有時候也是運行時錯誤,在AS2中用來訪問隱藏方法的方式,在AS3中不能用了,如:

package {

import flash.display.Sprite;

// 應用類必須定義成public (默認是internal)
public class AccessControl extends Sprite {

// 構造器總是public的
function AccessControl() {

// 只有在這個文件中才能訪問輔助類
var helper:Helper = new Helper();

trace(helper.pubNum); // OK
// trace(helper.protNum); // Error - 錯誤,不能訪問protected成員
// trace(helper.privNum); // Error - 錯誤,不能訪問private成員
trace(helper.interNum); // OK
}
}
}
// 輔助類默認是internal
class Helper {

// public聲明允許在任何地方被訪問
// 變量通常被設置為private的,然后通過聲明public的get set方法來訪問
public var pubNum:Number = 1;

// protected聲明只允許在子類中被訪問
protected var protNum:Number = 2;

// private聲明只能在類內部被訪問
private var privNum:Number = 3;

// internal聲明只允許在同一個包中被訪問
// 但是對于輔助類來說,只能在同一個文件類被訪問
internal var interNum:Number = 4;

// 構造器永遠都是public的
function Helper() {
}
}
// 子輔助類默認是internal的
// 可以繼承其他輔助類
class SubHelper extends Helper {

// 構造器,public
function SubHelper() {
trace(pubNum); // OK
trace(protNum); // OK - 繼承得到的
// trace(privNum); // Error - 不能訪問private
trace(interNum); // OK
}
}
另外一個例子:

package {

import flash.display.Sprite;
import containers.*;

// Application class needs to be public (internal by default)
public class AccessControl extends Sprite {

// constructors are always public
function AccessControl() {

// can access classes in other packages
// only if public
var bowl:Bowl = new Bowl(); // OK
// var basket:Basket = new Basket(); // Error - cannot access internal

trace(bowl.pubNum); // OK
// trace(bowl.protNum); // Error - cannot access protected
// trace(bowl.privNum); // Error - cannot access private
// trace(bowl.interNum); // Error - cannot access internal
}
}
}
ActionScript Code:
package containers {
// public class accessible anywhere
public class Bowl {

// public access granted anywhere
public var pubNum:Number = 1;

// protected access granted only for
// subclasses in that class
protected var protNum:Number = 2;

// private access granted only in this class
private var privNum:Number = 3;

// internal access granted only in the same package
internal var interNum:Number = 4;

// constructors are always public
function Bowl() {

// can access inteneral classes if in same package
var basket:Basket = new Basket();

trace(basket.pubNum); // OK
// trace(basket.protNum); // Error - cannot access protected
// trace(basket.privNum); // Error - cannot access private
trace(basket.interNum); // OK - same package

// clone using public method
var basketCopy:Basket = basket.clone();
}
}
}
ActionScript Code:
package containers {

// interal only accessible
// from other classes in package
internal class Basket {

// public access granted anywhere
public var pubNum:Number = 1;

// protected access granted only for
// subclasses in that class
protected var protNum:Number = 2;

// private access granted only in this class
private var privNum:Number = 3;

// internal access granted only in the same package
internal var interNum:Number = 4;

// constructors are always public
function Basket() {
}

// accessible anywhere as long as
// referencing a Basket instance
public function clone():Basket {
var basket:Basket = new Basket();
basket.pubNum = pubNum; // OK
basket.protNum = protNum; // OK - same class
basket.privNum = privNum; // OK - same class
basket.interNum = interNum; // OK
return basket;
}
}
}
19,抽象類
不幸的是,AS3中并沒有抽象類(只能繼承,不能實例化)。因此你不能在Flash中直接創(chuàng)建抽象類。但是,AS中的一些內置類實際上是抽象類。包括:

DisplayObject
InteractiveObject
DisplayObjectContainer
和抽象類一樣,你不能使用new關鍵字創(chuàng)建這些類的實例。例如:
var myObj:InteractiveObject = new InteractiveObject(); //錯誤
但是,除此之外,在AS中,你也不能創(chuàng)建這些類的直接子類,例如:

package {
import flash.display.DisplayObject;
public class MyDisplay extends DisplayObject{
public function MyDisplay (){
// ERROR
}
}
}
這個類在的特性和在Player中如何定義有關。如果你創(chuàng)建這些類的直接子類并實例化,或者直接實例化這個類,都會出現Argument Error。
因此,如果你想擴展一個抽象類,可以采用擴展抽象類的現有的internal子類的方法。例如,如果你想擴展DisplayObject,你可以擴展Shape,一個輕量級的,internal訪問級別的,DisplayObject的直接子類。

相關文章

  • flash cs6鼠標跟隨效果實現代碼分享

    flash cs6想要實現鼠標跟隨效果?該怎么制作呢?今天我們就來看看使用as2.0實現鼠標跟隨效果的教程,需要的朋友可以參考下
    2019-05-19
  • Flash cs6怎么使用代碼輸入中英文文本?

    Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來輸入文本,該怎么使用代碼輸入文本呢?請看下文詳細的教程,需要的朋友
    2018-03-11
  • flash as3.0怎么定義抽象類和抽象?

    flash as3.0抽象類怎么定義? as3.0中有很多抽象類,該怎么定義抽象類和抽象方法呢?下面我們就來看看簡單的例子,需要的朋友可以參考下http://www.fzitv.net/softs/408402.
    2018-02-28
  • flash cs6中怎么使用ActionScript3.0?

    flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來看看詳細的教程,需要的朋友可以參考下
    2018-01-25
  • Flash中怎么實現鼠標點擊決定圖像位置?

    本教程給大家分享一個Flash小教程,教大家在Flash CS6中怎么實現鼠標點擊決定圖像位置?方法很簡單,感興趣的朋友歡迎前來一起分享學習
    2018-01-12
  • Flash中如何用代碼將圖片放在自己想要的舞臺位置?

    本教程教腳本之家的ActionScript教程學習者在Flash中如何用代碼將圖片放在自己想要的舞臺位置,教程講解的詳細,感興趣的朋友歡迎前來分享學習
    2017-11-20
  • 在Flash CS6中使用with函數繪制背景圖教程

    本教程教腳本之家的ActionScript教程學習者如何在Flash CS6中使用with函數繪制背景圖?教程一步步講解的挺詳細,方法也不難,非常適合Flash新手入門學習
    2017-11-18
  • Flash怎么設置元件坐標?flash使用代碼設置元件的坐標的教程

    Flash怎么設置元件坐標?flash中導如的元件需要添加坐標,該怎么定位元件坐標呢?下面我們就來看看flash使用代碼設置元件的坐標的教程,需要的朋友可以參考下
    2017-10-11
  • Flash怎么制作來回搖擺的花朵的動畫?

    Flash怎么制作來回搖擺的花朵的動畫?Flash中想要給花朵制作一段搖擺的動畫效果,該怎么制作呢?下面我們就來看看詳細的教程,很簡單,需要的朋友可以參考下
    2017-05-23
  • Flash怎么制作流動七彩色的文字?

    Flash怎么制作流動七彩色的文字?想要讓文字動起來,該怎么使用flash給文字制作一個流動七彩色的動畫呢?下面我們就來看看詳細的教程,需要的朋友可以參考下
    2017-04-23

最新評論

宁乡县| 蕉岭县| 姚安县| 太谷县| 宁安市| 图木舒克市| 左贡县| 雅安市| 张北县| 西华县| 兴山县| 万年县| 宜州市| 景宁| 洛浦县| 财经| 静海县| 古浪县| 卓资县| 湄潭县| 新和县| 日照市| 康马县| 绥棱县| 定边县| 离岛区| 太湖县| 凭祥市| 宁陵县| 灵宝市| 晋城| 绥德县| 栖霞市| 公主岭市| 清徐县| 安远县| 沧州市| 龙里县| 甘谷县| 定襄县| 吉安县|