国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > 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 類。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦县| 五寨县| 志丹县| 梨树县| 琼结县| 开远市| 桂阳县| 仁寿县| 庆云县| 塔城市| 永仁县| 承德县| 丰县| 余干县| 巫山县| 若尔盖县| 贡觉县| 昌黎县| 平罗县| 彰化市| 桐梓县| 泉州市| 旬阳县| 南康市| 怀仁县| 周至县| 绍兴市| 同仁县| 阳曲县| 会同县| 自治县| 射洪县| 宁乡县| 应用必备| 昭通市| 舞阳县| 尉犁县| 桃源县| 扎兰屯市| 姜堰市| 横峰县|