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

首頁 > 辦公 > Flash > 正文

Flash AS 教程:子類化顯示對象

2020-07-17 13:19:29
字體:
來源:轉載
供稿:網友
子類化顯示對象
前面已經講過生成 Sprite 或 MovieClip 類的子類,對某個類進行子類化是非常有用的。首先,大家可能對 AS 3 取消 attachMovieClip 功能感到十分驚呀,如果這樣的話,我們怎么才能在 Flash CS3 IDE 庫中取出影片剪輯元件放入舞臺呢?答案是,使用一個繼承自 MovieClip 或 Sprite 的類。為了能夠好地解釋這個問題,簡單地介紹一下 IDE:
    創建一個新的 FLA 文件,并在舞臺上繪制一些圖形。 選中圖形按下 F8 鍵轉換為元件。 在轉換為元件窗口中輸入一個名稱,并設置為影片剪輯類型。 選擇為 ActionScript 導出。
在以前的 Flash 版本中,可以自由地給出標識符或輸入一個類名。而在 Flash CS3 中,標識符一欄不可用了,類一欄會自動地填入默認值。這里還多出了基類一欄,默認為 flash.display.MovieClip,這里也可以填入繼承自 MovieClip 或 Sprite 的自定義類。
隨意輸入一個類名,不必擔心沒有這個類,然后點擊確定。這個地方很有趣,Flash 找不到這個類,它就會自動生成一個類,并對其進行編譯。并不是說 Flash 會創建一個 ActionScript 類文件,但它會在 SWF 中,生成一串字節代碼表示一個繼承自 Sprite 或 MovieClip 的類。除了繼承了基類,它什么都不會做,但它已經與庫中的元件連接上了。比如,你的類名為 Ball。在文檔類或時間軸上,可以這么寫:
var ball:Ball = new Ball();
addChild(ball);
這樣就在舞臺上創建了一個庫中的元件,就像 AS 2 的 attachMovie 方法一樣。我們要是能給出自定義的真正的類名及路徑的話,那么就可以讓元件附加很多功能。現在,我們跳出 Flash IDE 回到類的世界,看下一個示例。下面再看一個重定父級的示例,這里有一些重復的部分可以寫入另一個類中。看一下示例,假設已經創建了一個名為 parent1 的 Sprite 實例,要里面繪制正方形:
parent1.graphics.lineStyle(1, 0);
parent1.graphics.drawRect(-50, -50, 100, 100);
下面再創建一個名為 parent2 的 Sprite 實例,同樣也是繪制一個正方形。當然這個例子毫無意義,但它可以告訴我們 Sprite 的子類是多么的有用。首先,我們建立一個名為 ParentBox 的類,并繼承自 Sprite,這樣一來,就擁有了繪制正方形的代碼:
package {
import flash.display.Sprite;
public class ParentBox extends Sprite {
public function ParentBox() {
init();
}
private function init():void {
graphics.lineStyle(1, 0);
graphics.drawRect(-50, -50, 100, 100);
}
}
}
然后,使用這個類創建兩個 ParentBox,這樣做比創建兩個 Sprite 對象要好得多。
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Reparenting2 extends Sprite {
private var parent1:ParentBox;
private var parent2:ParentBox;
private var ball:Sprite;
public function Reparenting2() {
init();
}
private function init():void {
parent1 = new ParentBox();
addChild(parent1);
parent1.x = 60;
parent1.y = 60;
parent2 = new ParentBox();
addChild(parent2);
parent2.x = 170;
parent2.y = 60;
ball = new Sprite();
parent1.addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.graphics.endFill();
ball.addEventListener(MouseEvent.CLICK, onBallClick);
}
public function onBallClick(event:MouseEvent):void {
parent2.addChild(ball);
}
}
}
作為 ParentBox 的實例,它們仍是 Sprite ,因此還可以再增加子影片, init 方法直接進行繪圖。雖然這個示例價值不大,但可以讓你學會這種思想,往后,會在書中看到更多更復雜的示例。你也許想自己動手創建一個球(Ball)類,用于繪制小球,雖然這么做不會減少代碼里,但是當你的類變得十分復雜時,把功能代碼分離到不同的類中,這絕對是個好辦法,它比將所有類寫在一起要好得多,同時還促進了代碼的重用性。那么現在就去創建這個 Ball 類吧,在日后的學習中還要用到呢。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安达市| 巴彦淖尔市| 柞水县| 汕头市| 鸡东县| 招远市| 简阳市| 天等县| 宝应县| 门头沟区| 申扎县| 鄂伦春自治旗| 章丘市| 金塔县| 家居| 巴楚县| 沈阳市| 师宗县| 华宁县| 峡江县| 襄汾县| 宜君县| 明溪县| 天台县| 乌海市| 禹州市| 河间市| 合作市| 普定县| 翁牛特旗| 洛川县| 拉萨市| 平陆县| 顺昌县| 虞城县| 东至县| 屏东市| 舞钢市| 酉阳| 横峰县| 天镇县|