亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

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

2020-07-17 13:17:33
字體:
來源:轉載
供稿:網友
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中直接創建抽象類。但是,AS中的一些內置類實際上是抽象類。包括:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97视频国产在线| 在线观看不卡av| 丝袜美腿亚洲一区二区| 国产精品福利久久久| 91精品91久久久久久| 久久久久久久久久久久久久久久久久av| 久久久久久免费精品| 亚洲精品久久视频| 久久全国免费视频| 岛国av一区二区| 亚洲成人黄色网| 国产精品一香蕉国产线看观看| 97久久精品在线| 成人av在线亚洲| 最好看的2019的中文字幕视频| 一区二区三区 在线观看视| 国产一区二区精品丝袜| 国产综合视频在线观看| 97国产精品免费视频| 欧美国产精品va在线观看| 久久久久久成人| 亚洲一区二区福利| 欧美国产日本高清在线| 91最新在线免费观看| 日韩极品精品视频免费观看| 亚洲精品自拍第一页| 91精品国产综合久久香蕉最新版| 久久久在线视频| 97欧美精品一区二区三区| 国内成人精品一区| 亚洲成人网久久久| 91精品在线影院| 国产一区二区三区丝袜| 亚洲国产精久久久久久| 中文字幕一精品亚洲无线一区| 亚洲美女性视频| 亚洲精品丝袜日韩| 美日韩丰满少妇在线观看| 日韩久久免费视频| 日韩av在线一区二区| 91久久精品日日躁夜夜躁国产| 91夜夜未满十八勿入爽爽影院| 亚洲欧美日韩另类| 国产精品美女免费视频| 欧美大片第1页| 日韩电影中文字幕| 亚洲欧美在线免费| 日韩欧美国产中文字幕| 免费不卡在线观看av| 97国产真实伦对白精彩视频8| 国内精品久久久久影院 日本资源| 欧美在线一区二区视频| 日本免费久久高清视频| 日韩中文字幕精品| 亚洲美女在线观看| 欧美电影免费观看网站| 欧美人与性动交| 亚洲午夜未满十八勿入免费观看全集| 亚洲欧美成人在线| 久久国产精品免费视频| 欧洲成人免费aa| 青青草原一区二区| 最近中文字幕2019免费| 在线观看欧美日韩国产| 亚洲激情在线观看视频免费| 日韩成人小视频| 韩国视频理论视频久久| 日韩专区在线观看| 亚洲激情免费观看| 色综合久久天天综线观看| 69**夜色精品国产69乱| 最新的欧美黄色| 欧美最猛性xxxxx(亚洲精品)| 亚洲香蕉成人av网站在线观看| 日韩中文娱乐网| 欧美一区二区大胆人体摄影专业网站| 91高清免费视频| 91在线免费视频| 亚洲日本成人女熟在线观看| 欧美日韩国产中文精品字幕自在自线| 欧美国产高跟鞋裸体秀xxxhd| 97在线日本国产| 欧美裸体xxxx极品少妇软件| 精品中文字幕在线| 国产999精品视频| 日韩成人中文电影| 国产精品va在线播放我和闺蜜| 97在线视频国产| 亚洲aa中文字幕| 欧美成人小视频| 久久欧美在线电影| 欧美激情a在线| 91精品国产综合久久男男| 亚洲综合精品一区二区| 欧美国产日韩一区二区| 91精品在线观| 热久久这里只有精品| 亚洲一区二区免费在线| 午夜精品久久久久久99热| 久久亚洲精品一区| 岛国视频午夜一区免费在线观看| 日韩欧美精品网址| 亚洲欧洲日本专区| 91人人爽人人爽人人精88v| 日韩的一区二区| 久久天天躁狠狠躁夜夜躁| 成人两性免费视频| 97国产在线观看| 成人精品视频久久久久| 国产精品白嫩初高中害羞小美女| 欧美一区二区大胆人体摄影专业网站| 亚洲福利影片在线| 亚洲男女自偷自拍图片另类| 亚洲精品美女免费| 亚洲日韩中文字幕在线播放| 久久久久久久国产精品视频| 亚洲色图美腿丝袜| 成人av番号网| 亚洲第一网中文字幕| 国产成人欧美在线观看| 欧美激情免费视频| 国产精品激情av电影在线观看| 丝袜亚洲另类欧美重口| 亚洲综合日韩在线| 国产视频精品自拍| 久久久精品一区二区三区| 97超级碰碰人国产在线观看| 久久精品国产免费观看| 欧美日韩另类视频| www国产91| 国产精品久久激情| 欧美第一黄色网| 欧美国产日韩在线| 中文字幕av一区中文字幕天堂| 欧美亚洲免费电影| 日本sm极度另类视频| 日韩在线观看免费av| 亚洲欧美日韩精品久久亚洲区| 日韩欧美极品在线观看| 91av在线免费观看视频| 日产日韩在线亚洲欧美| 国产精品va在线播放我和闺蜜| 日本国产高清不卡| 成人性生交大片免费观看嘿嘿视频| 国产精品pans私拍| 色妞一区二区三区| 亚洲欧美日韩一区二区在线| 欧美电影免费观看网站| 国产美女扒开尿口久久久| 美女黄色丝袜一区| 亚洲白虎美女被爆操| 91成人免费观看网站| 国产精品久久久久久久av大片| 97久久超碰福利国产精品…| 91产国在线观看动作片喷水| 亚洲激情视频在线播放| 久久视频精品在线| 亚洲国产另类 国产精品国产免费| 日韩欧美中文字幕在线播放| 亚洲第一av在线| 亚洲激情电影中文字幕| 欧美精品国产精品日韩精品| 911国产网站尤物在线观看| 亚洲视频在线免费看|