麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 辦公 > Flash > 正文

Flash AS 教程:構造函數(Constructor)

2020-07-17 13:19:22
字體:
來源:轉載
供稿:網友
構造函數(Constructor)
構造函數是指一個名字與類名相同的方法。當該類被實例化時,該函數會被自動調用,也可以傳入參數,例如:
首先,創建一個類:
package {
public class MyClass {
public function MyClass(arg:String) {
trace("constructed");
trace("you passed " arg);
}
}
}
然后,假設工作在 Flash CS3 IDE(集成開發環境)中,在時間軸上創建該實例:
var myInstance:MyClass = new MyClass("hello");
結果輸出:
constructed
you passed hello
繼承(Inheritance)
一個類可以從另一個類中繼承(inherit)和擴展(extend)而來。這就意味著它獲得了另一個類所有的屬性和方法(除了那些被 private 掩蓋住的屬性)。所生成的子類(派生類)還可以增加更多的屬性和方法,或更改父類(基類)已有的屬性或方法。要分別創建兩個類來實現(兩個獨立的 .as文件),例如:

不要忘記,每個類都必須在其自身的文件中,文件名為該類的類名,擴展名 .as,所以必須要有 MyBaseClass.as 文件和 MySubClass.as 文件。因此,在使用 Flash CS3 IDE 時,保存的 FLA 文件,要與這兩個類在同一個文件夾。
下面代碼會生產兩個實例,把它寫入時間軸看看會發生什么:
var base:MyBaseClass = new MyBaseClass();
base.sayHello();
var sub:MySubClass = new MySubClass();
sub.sayHello();
sub.sayGoodbye();
第一個實例沒什么可說的,值得注意的是第二個實例中的 sayHello 方法,雖然在 MySubClass 中沒有定義 sayHello,但它卻是繼承自 MyBaseClass 類的。另一個值得注意的是,增加了一個新的方法 sayGoodbye,這是父類所沒有的。
下面說說,在子類中如何改變一個父類中已存在的方法。在 AS 2 中,我們可以只需要重新定義這個方法就可以了。而在 AS 3 中,則必需明確地寫出 override 關鍵字,來進行重新定義。
package {
public class MySubClass extends MyBaseClass {
override public function sayHello():void {
trace("Hola from MySubClass");
}
public function sayGoodbye():void {
trace("Goodbye from MySubClass");
}
}
}
請注意,原來的 sayHello 方法被重寫,再調用 MySubClass 后,就有了新的信息。另外,私有成員也不能被重寫,因為它們只能被它們自身的類訪問。
MovieClip/Sprite 子類
我們可以自己寫一個類,然后讓另一個類去繼承它。在 AS 3 中,所有代碼都不是寫在時間軸上的,那么它們一開始都要繼承自 MovieClip 或 Sprite。 MovieClip 類是影片剪輯對象屬性和方法的 ActionScript 模板。它包括我們所熟悉的屬性如:影片的 x,y 坐標,縮放等,這些在 AS 3 中的變化不大。
AS 3 還增加了 Sprite 類,通常把它理解為不在時間軸上的影片剪輯。很多情況下,只使用代碼操作對象,并不涉及時間軸和幀,這時就應該使用 Sprite 這個輕型的類。如果一個類繼承自 MovieClip 或 Sprite ,那么它會自動擁有該類所有的屬性和方法,我們還可以為這個類增加特殊的屬性和方法。
例如,游戲設計一個太空船的對象,我們希望它擁有一個圖形,并且在屏幕的某個位置移動,旋轉,并為動畫添加 enterFrame 偵聽器,還有鼠標、鍵盤的偵聽等。這些都可以由 MovieClip 或 Sprite 來完成,所以就要繼承自它們。同時,還可以增加一些屬性如:速度(speed)、油量(fuel)、損壞度(damage),還有像起飛(takeOff)、墜落(crash)、射擊(shoot)或是自毀(selfDestruct)等方法。那么這個類大概是這樣的:
package {
import flash.display.Sprite;
public class SpaceShip extends Sprite {
private var speed:Number = 0;
private var damage:Number = 0;
private var fuel:Number = 1000;
public function takeOff():void {
//...
}
public function crash():void {
//...
}
public function shoot():void {
//...
}
public function selfDestruct():void {
//...
}
}
}
注意,首先要導入 flash.display 包中的 Sprite 類,如果要導入MovieClip類,同樣也需要導入這個相同的包 flash.display.MovieClip 類。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜天堂在线视频 | 欧美wwwwww | 亚洲第一综合 | 三级国产三级在线 | www.成人在线 | 神马久久精品综合 | 国产一区二区午夜 | 国产精品久久久久久久久久尿 | 国产无区一区二区三麻豆 | 日本一级黄色大片 | 国产高潮好爽好大受不了了 | 欧美精品欧美极品欧美激情 | 国产精品刺激对白麻豆99 | 欧美一区二区黄 | 精品国产一区二区三区在线观看 | 国产精品av久久久久久久久久 | 午夜视频观看 | 玩偶姐姐 在线观看 | 日韩在线激情 | 2019中文字幕在线播放 | 黄色免费av网站 | 香蕉国产片 | 成人性生活视频在线播放 | 国产1区在线 | 深夜福利视频绿巨人视频在线观看 | 久久成人激情视频 | 激情网站免费观看 | 色网站免费观看 | 日韩精品dvd | 久久国产精品二区 | 日本搞逼视频 | 成人一区二区三区在线 | 国产午夜精品久久久久久免费视 | 国产人成精品一区二区三 | 欧美日本一 | 亚洲欧美aⅴ | 欧美xxxx精品另类 | 国产精品性夜天天视频 | 91丨九色丨国产在线观看 | 欧美女同hd| 在线成人影视 |