Flash AS 教程:子類化顯示對象
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-06 01:25:04 作者:佚名
我要評論
子類化顯示對象
前面已經(jīng)講過生成 Sprite 或 MovieClip 類的子類,對某個類進行子類化是非常有用的。首先,大家可能對 AS 3 取消 attachMovieClip 功能感到十分驚呀,如果這樣的話,我們怎么才能在 Flash CS3 IDE 庫中取出影片剪輯元件放入舞臺呢?答案是,使用一個繼承自
子類化顯示對象
前面已經(jīng)講過生成 Sprite 或 MovieClip 類的子類,對某個類進行子類化是非常有用的。首先,大家可能對 AS 3 取消 attachMovieClip 功能感到十分驚呀,如果這樣的話,我們怎么才能在 Flash CS3 IDE 庫中取出影片剪輯元件放入舞臺呢?答案是,使用一個繼承自 MovieClip 或 Sprite 的類。為了能夠好地解釋這個問題,簡單地介紹一下 IDE:
隨意輸入一個類名,不必擔心沒有這個類,然后點擊確定。這個地方很有趣,F(xiàn)lash 找不到這個類,它就會自動生成一個類,并對其進行編譯。并不是說 Flash 會創(chuàng)建一個 ActionScript 類文件,但它會在 SWF 中,生成一串字節(jié)代碼表示一個繼承自 Sprite 或 MovieClip 的類。除了繼承了基類,它什么都不會做,但它已經(jīng)與庫中的元件連接上了。比如,你的類名為 Ball。在文檔類或時間軸上,可以這么寫:
var ball:Ball = new Ball();
addChild(ball);
這樣就在舞臺上創(chuàng)建了一個庫中的元件,就像 AS 2 的 attachMovie 方法一樣。我們要是能給出自定義的真正的類名及路徑的話,那么就可以讓元件附加很多功能?,F(xiàn)在,我們跳出 Flash IDE 回到類的世界,看下一個示例。下面再看一個重定父級的示例,這里有一些重復的部分可以寫入另一個類中??匆幌率纠?,假設(shè)已經(jīng)創(chuàng)建了一個名為 parent1 的 Sprite 實例,要里面繪制正方形:
parent1.graphics.lineStyle(1, 0);
parent1.graphics.drawRect(-50, -50, 100, 100);
下面再創(chuàng)建一個名為 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);
}
}
}
然后,使用這個類創(chuàng)建兩個 ParentBox,這樣做比創(chuàng)建兩個 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 的實例,它們?nèi)允?Sprite ,因此還可以再增加子影片, init 方法直接進行繪圖。雖然這個示例價值不大,但可以讓你學會這種思想,往后,會在書中看到更多更復雜的示例。你也許想自己動手創(chuàng)建一個球(Ball)類,用于繪制小球,雖然這么做不會減少代碼里,但是當你的類變得十分復雜時,把功能代碼分離到不同的類中,這絕對是個好辦法,它比將所有類寫在一起要好得多,同時還促進了代碼的重用性。那么現(xiàn)在就去創(chuàng)建這個 Ball 類吧,在日后的學習中還要用到呢。
前面已經(jīng)講過生成 Sprite 或 MovieClip 類的子類,對某個類進行子類化是非常有用的。首先,大家可能對 AS 3 取消 attachMovieClip 功能感到十分驚呀,如果這樣的話,我們怎么才能在 Flash CS3 IDE 庫中取出影片剪輯元件放入舞臺呢?答案是,使用一個繼承自 MovieClip 或 Sprite 的類。為了能夠好地解釋這個問題,簡單地介紹一下 IDE:
-
創(chuàng)建一個新的 FLA 文件,并在舞臺上繪制一些圖形。
選中圖形按下 F8 鍵轉(zhuǎn)換為元件。
在轉(zhuǎn)換為元件窗口中輸入一個名稱,并設(shè)置為影片剪輯類型。
選擇為 ActionScript 導出。
隨意輸入一個類名,不必擔心沒有這個類,然后點擊確定。這個地方很有趣,F(xiàn)lash 找不到這個類,它就會自動生成一個類,并對其進行編譯。并不是說 Flash 會創(chuàng)建一個 ActionScript 類文件,但它會在 SWF 中,生成一串字節(jié)代碼表示一個繼承自 Sprite 或 MovieClip 的類。除了繼承了基類,它什么都不會做,但它已經(jīng)與庫中的元件連接上了。比如,你的類名為 Ball。在文檔類或時間軸上,可以這么寫:
var ball:Ball = new Ball();
addChild(ball);
這樣就在舞臺上創(chuàng)建了一個庫中的元件,就像 AS 2 的 attachMovie 方法一樣。我們要是能給出自定義的真正的類名及路徑的話,那么就可以讓元件附加很多功能?,F(xiàn)在,我們跳出 Flash IDE 回到類的世界,看下一個示例。下面再看一個重定父級的示例,這里有一些重復的部分可以寫入另一個類中??匆幌率纠?,假設(shè)已經(jīng)創(chuàng)建了一個名為 parent1 的 Sprite 實例,要里面繪制正方形:
parent1.graphics.lineStyle(1, 0);
parent1.graphics.drawRect(-50, -50, 100, 100);
下面再創(chuàng)建一個名為 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);
}
}
}
然后,使用這個類創(chuàng)建兩個 ParentBox,這樣做比創(chuàng)建兩個 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 的實例,它們?nèi)允?Sprite ,因此還可以再增加子影片, init 方法直接進行繪圖。雖然這個示例價值不大,但可以讓你學會這種思想,往后,會在書中看到更多更復雜的示例。你也許想自己動手創(chuàng)建一個球(Ball)類,用于繪制小球,雖然這么做不會減少代碼里,但是當你的類變得十分復雜時,把功能代碼分離到不同的類中,這絕對是個好辦法,它比將所有類寫在一起要好得多,同時還促進了代碼的重用性。那么現(xiàn)在就去創(chuàng)建這個 Ball 類吧,在日后的學習中還要用到呢。
相關(guān)文章
flash cs6想要實現(xiàn)鼠標跟隨效果?該怎么制作呢?今天我們就來看看使用as2.0實現(xiàn)鼠標跟隨效果的教程,需要的朋友可以參考下2019-05-19
Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來輸入文本,該怎么使用代碼輸入文本呢?請看下文詳細的教程,需要的朋友2018-03-11
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 CS6中怎么實現(xiàn)鼠標點擊決定圖像位置?方法很簡單,感興趣的朋友歡迎前來一起分享學習2018-01-12
本教程教腳本之家的ActionScript教程學習者在Flash中如何用代碼將圖片放在自己想要的舞臺位置,教程講解的詳細,感興趣的朋友歡迎前來分享學習2017-11-20
在Flash CS6中使用with函數(shù)繪制背景圖教程
本教程教腳本之家的ActionScript教程學習者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細,方法也不難,非常適合Flash新手入門學習2017-11-18
Flash怎么設(shè)置元件坐標?flash使用代碼設(shè)置元件的坐標的教程
Flash怎么設(shè)置元件坐標?flash中導如的元件需要添加坐標,該怎么定位元件坐標呢?下面我們就來看看flash使用代碼設(shè)置元件的坐標的教程,需要的朋友可以參考下2017-10-11
Flash怎么制作來回搖擺的花朵的動畫?Flash中想要給花朵制作一段搖擺的動畫效果,該怎么制作呢?下面我們就來看看詳細的教程,很簡單,需要的朋友可以參考下2017-05-23
Flash怎么制作流動七彩色的文字?想要讓文字動起來,該怎么使用flash給文字制作一個流動七彩色的動畫呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2017-04-23











