Flash AS3教程:下雪動畫效果
互聯(lián)網(wǎng) 發(fā)布時間:2008-10-06 01:25:44 作者:佚名
我要評論

如果你對本篇文章很感興趣或是在學(xué)習(xí)Flash時遇到了什么困難,歡迎到我們的學(xué)院論壇來交流。
與AS2.0相比較,AS3.0有了很大的變化,它改變了我們以往的編程習(xí)慣。今天我們通過一個非常簡單的入門練習(xí)-下雪效果,來認識一下AS3.0,主要了解一下AS3.0與AS2.0的區(qū)別。
如果你對本篇文章很感興趣或是在學(xué)習(xí)Flash時遇到了什么困難,歡迎到我們的學(xué)院論壇來交流。
與AS2.0相比較,AS3.0有了很大的變化,它改變了我們以往的編程習(xí)慣。今天我們通過一個非常簡單的入門練習(xí)-下雪效果,來認識一下AS3.0,主要了解一下AS3.0與AS2.0的區(qū)別。
首先,我們來介紹一下AS3的一些基礎(chǔ)知識。
在AS3中怎樣把庫中的元件加載舞臺
我們知道在AS2中我們可以通過attachMovie將庫中的mc加載到舞臺上。在使用這個命令前我們必須要做的事情是在庫中右擊元件,打開連接面板,然后在標(biāo)識符框中為元件取上一個連接名,這樣才能用attachMovie()來加載它?,F(xiàn)在我們在AS3中來做一下,在庫中右擊元件,打開連接面板,這時你會叫道:“為什么我的標(biāo)識符框是灰色的,不能用。”不是你的是灰色的,而是在AS3中都是灰色的,因為在AS3中是不能用 attachMovie()來加載元件的。AS3據(jù)說是完全面向?qū)ο缶幊痰恼Z言了,這就必須要了解類,對象等概念。類就是一類東西的一個名稱,比如動物類就包括了所有動物,動物類下面的所有人就是人類了。又如所有電器可叫電器類,電器類下面又可有電視機類等。對象是某類的一個具體的實例。比如你就是人類中的一個具體的人,你就是人類的一個對象。看到這里你說:“我暈”,我說:“我更暈”。介紹類,對象這些概念看的人不容易看懂,說的人更不容易說清。在 AS3中要加載一個顯式對象(我們在舞臺上看得見的東西),必須要載入一個類,然后要聲明這個類的一個實例,再用new關(guān)鍵字創(chuàng)建它,最后用 addChild()將它加載到舞臺。我們將舞臺著是一個展臺,將庫看著是一個倉庫,現(xiàn)在倉庫中有一臺電視機要放到展臺上,該怎樣做呢?首先需要一個電視機類,然后需要聲明一個實例:
var 電視機甲(實例名):電視機(類名)= new 電視機();
addChild(電視機甲);
現(xiàn)在我們回到flash中來看看,現(xiàn)在庫中有一個元件,我們要將它加載到舞臺上,應(yīng)該這樣做:
在庫中右擊該元件,打開連接面板,我們會看到一個叫類的文本框,在這里給這個類取一個名字,比如myl.確定。這樣我們就加載了一個叫myl的類了。接下來,在場景的幀動作中,輸入:
var mymc:myl = new myl();
addChild(mymc);
mymc.x = 100;
mymc.y = 100;
測試影片,我們會看到,庫中的這個元件已被加載到舞臺的(100,100)坐標(biāo)處了。
AS3的事件偵聽機制
什么是事件呢?當(dāng)某件事情發(fā)生的時候就做些什么事。這個某件事情就是事件。比如:press,當(dāng)鼠標(biāo)按下的時候,這就是一個事件。在AS2中,我們有兩種方式來實現(xiàn)事件驅(qū)動。一種是將代碼直接寫在元件上(mc或按鈕)。比如,在場景中有一個叫mymc的影片剪輯元件,我們在其上點右鍵,打開動作面板,輸入:
on(press){
干點壞事;
}
這樣,當(dāng)我們在mymc元件上按下鼠標(biāo)時,就會去干點壞事。第二種方法是在幀動作上輸入代碼:
mymc.onPress = function(){
干點壞事;
}
這樣,當(dāng)我們在mymc元件上按下鼠標(biāo)時,同樣會去干點壞事。
接下來,我們在AS3中來看看:在元件上點右鍵,打開動作面板,你會看到“無法將動作應(yīng)用于當(dāng)前所選內(nèi)容”。哦嗬,搞不成。在AS3中無法將代碼寫在元件上,只能寫在幀動作上。而AS3的事件偵聽,也有它自已,的格式,不管你樂意不樂意,你都必須這樣做。AS3在事件偵聽格式是:
function 函數(shù)名稱(事件對象:事件類型):void
{
// 此處是為響應(yīng)事件而執(zhí)行的動作。
}
觸發(fā)事件的對象.addEventListener(事件類型.事件名稱, 函數(shù)名稱);
必須先聲明一個函數(shù),將要執(zhí)行的代碼放在其中,然后觸發(fā)事件的對象用addEventListener去偵聽事件,如果事件發(fā)生則調(diào)用函數(shù)。還用上面那個干壞事的例子。打開幀動作面板,輸入:
function 干壞事(event:MouseEvent):void {
干點壞事;
}
mymc.addEventListener(MouseEvent.CLICK,干壞事);
這樣,當(dāng)我們在mymc元件上按下鼠標(biāo)時,會再一次去干點壞事。上面代碼中的MouseEvent是鼠標(biāo)事件的意思,CLICK是單擊的意思,即在元件上單擊就會觸發(fā)事件。
在AS3中改變對象的位置和縮放對象
我們知道,對象在舞臺上位置由其x,y軸的坐標(biāo)來決定。在AS2中有兩個屬性:_x,和_y,用來指定對象的x,y坐標(biāo),這一點在AS3中也是一樣的,只是AS3中去掉了下劃線,屬性名就叫x,y.比如,在AS2中,要將mymc的位置定在(100,100)處,要這樣:
mymc._x = 100;
mymc._y = 100;
而在AS3中是這樣的:
mymc.x = 100;
mymc.y = 100;
在AS2中對象的大小可以用width,height,_xscale,_yscale四個屬性來確定,在AS3中width和height是一樣的,不再說它了。AS3用scaleX和scaleY屬性取代了_xscale,_yscale屬性。同時它們的值也是有區(qū)別的。AS2中的,_xscale, _yscale屬性值是百分比。而AS3中的scaleX和scaleY值是一分比。一分比?這是我發(fā)明的,博士專用名詞,嘿嘿。scaleX和 scaleY值實際就是放大縮小的倍數(shù)。比如,在AS2中 mymc._xscale = 30; 這是將mymc的寬度縮小到原來的30%。
在AS3中 mymc.scalex = 30; 這是將mymc的寬度放大到原來的30倍。要將寬度縮小到30%,就要用
mymc.scale = 0.3;
好了,基礎(chǔ)知識就介紹這么多,本文就當(dāng)是AS3的入門教程吧,介紹的就幾個入門知識。
下面我們就來做一個下雪效果的練習(xí),將上面的知識點運用到實例中。
實例練習(xí)-下雪效果
效果演示:
打開flash cs3,選擇新建flash文件(ActionScript 3.0).
導(dǎo)入一張背景圖片,在場景中放好。
新建一個影片剪輯元件,將舞臺放大到800%,用橢園工具,畫一個無筆觸,填充色為放射將白色左色標(biāo)透明度為100%,右色標(biāo)透明度0%的橢園,大小這 4x3,用選擇工具調(diào)整一下,使其不太規(guī)則。在第30幀插入關(guān)鍵幀。插入引導(dǎo)層,畫一條由上向下的彎曲引導(dǎo)線?;氐降谝粚?,在第一幀和30幀,分別將橢園放到引導(dǎo)線的兩端,建立補間動畫。
如圖:
放大至800%時
打開庫,在元件上右擊,打開連接面板,在類文本框中輸入:xl,確定。
回到主場景,新插入一圖層,命名為action,打開動作面板:輸入:
var i:Number = 1;
addEventListener(Event.ENTER_FRAME,xx);
function xx(event:Event):void {
var x_mc:xl = new xl();
addChild(x_mc);
x_mc.x = Math.random()*550;
x_mc.scaleX = 0.2 Math.random();
x_mc.scaleY = 0.2 Math.random();
i ;
if(i>100){
this.removeChildAt(1);
i=100;
}
}
ok,完成。
上面的代碼,在基礎(chǔ)介紹中都已說明了,應(yīng)該一看就明白了。有幾句解釋一下。
x_mc.scaleX = 0.2 Math.random();
x_mc.scaleY = 0.2 Math.random();
0.2 Math.random();會產(chǎn)生0.2-1.2間的隨機數(shù),這就讓雪花縮小到20%到放大到120%間,落下來的雪花,大小不一,顯得更加真實一些。
removeChildAt(n);是刪除已加載的顯式對象,其中的n是已加載的對象的索引號。從addEventListener (Event.ENTER_FRAME,xx);這一句可以看出,運行一幀,就會從庫中加載一個雪花,同時i加,這樣當(dāng)i等于100時,場景中就已有 100個雪花了。這個時候我們用this.removeChildAt(1);將最先加載的雪花刪除。然后將i設(shè)為100,到下一幀,i就又大于100 了,那么要加載1個雪花,同時又刪除了一個雪花,這就達到了一個動態(tài)平衡,場景中始終只有100個雪花。要不然,就會雪越下越多,造成雪災(zāi)就不好了。
與AS2.0相比較,AS3.0有了很大的變化,它改變了我們以往的編程習(xí)慣。今天我們通過一個非常簡單的入門練習(xí)-下雪效果,來認識一下AS3.0,主要了解一下AS3.0與AS2.0的區(qū)別。
首先,我們來介紹一下AS3的一些基礎(chǔ)知識。
在AS3中怎樣把庫中的元件加載舞臺
我們知道在AS2中我們可以通過attachMovie將庫中的mc加載到舞臺上。在使用這個命令前我們必須要做的事情是在庫中右擊元件,打開連接面板,然后在標(biāo)識符框中為元件取上一個連接名,這樣才能用attachMovie()來加載它?,F(xiàn)在我們在AS3中來做一下,在庫中右擊元件,打開連接面板,這時你會叫道:“為什么我的標(biāo)識符框是灰色的,不能用。”不是你的是灰色的,而是在AS3中都是灰色的,因為在AS3中是不能用 attachMovie()來加載元件的。AS3據(jù)說是完全面向?qū)ο缶幊痰恼Z言了,這就必須要了解類,對象等概念。類就是一類東西的一個名稱,比如動物類就包括了所有動物,動物類下面的所有人就是人類了。又如所有電器可叫電器類,電器類下面又可有電視機類等。對象是某類的一個具體的實例。比如你就是人類中的一個具體的人,你就是人類的一個對象。看到這里你說:“我暈”,我說:“我更暈”。介紹類,對象這些概念看的人不容易看懂,說的人更不容易說清。在 AS3中要加載一個顯式對象(我們在舞臺上看得見的東西),必須要載入一個類,然后要聲明這個類的一個實例,再用new關(guān)鍵字創(chuàng)建它,最后用 addChild()將它加載到舞臺。我們將舞臺著是一個展臺,將庫看著是一個倉庫,現(xiàn)在倉庫中有一臺電視機要放到展臺上,該怎樣做呢?首先需要一個電視機類,然后需要聲明一個實例:
var 電視機甲(實例名):電視機(類名)= new 電視機();
addChild(電視機甲);
現(xiàn)在我們回到flash中來看看,現(xiàn)在庫中有一個元件,我們要將它加載到舞臺上,應(yīng)該這樣做:
在庫中右擊該元件,打開連接面板,我們會看到一個叫類的文本框,在這里給這個類取一個名字,比如myl.確定。這樣我們就加載了一個叫myl的類了。接下來,在場景的幀動作中,輸入:
var mymc:myl = new myl();
addChild(mymc);
mymc.x = 100;
mymc.y = 100;
測試影片,我們會看到,庫中的這個元件已被加載到舞臺的(100,100)坐標(biāo)處了。
AS3的事件偵聽機制
什么是事件呢?當(dāng)某件事情發(fā)生的時候就做些什么事。這個某件事情就是事件。比如:press,當(dāng)鼠標(biāo)按下的時候,這就是一個事件。在AS2中,我們有兩種方式來實現(xiàn)事件驅(qū)動。一種是將代碼直接寫在元件上(mc或按鈕)。比如,在場景中有一個叫mymc的影片剪輯元件,我們在其上點右鍵,打開動作面板,輸入:
on(press){
干點壞事;
}
這樣,當(dāng)我們在mymc元件上按下鼠標(biāo)時,就會去干點壞事。第二種方法是在幀動作上輸入代碼:
mymc.onPress = function(){
干點壞事;
}
這樣,當(dāng)我們在mymc元件上按下鼠標(biāo)時,同樣會去干點壞事。
接下來,我們在AS3中來看看:在元件上點右鍵,打開動作面板,你會看到“無法將動作應(yīng)用于當(dāng)前所選內(nèi)容”。哦嗬,搞不成。在AS3中無法將代碼寫在元件上,只能寫在幀動作上。而AS3的事件偵聽,也有它自已,的格式,不管你樂意不樂意,你都必須這樣做。AS3在事件偵聽格式是:
function 函數(shù)名稱(事件對象:事件類型):void
{
// 此處是為響應(yīng)事件而執(zhí)行的動作。
}
觸發(fā)事件的對象.addEventListener(事件類型.事件名稱, 函數(shù)名稱);
必須先聲明一個函數(shù),將要執(zhí)行的代碼放在其中,然后觸發(fā)事件的對象用addEventListener去偵聽事件,如果事件發(fā)生則調(diào)用函數(shù)。還用上面那個干壞事的例子。打開幀動作面板,輸入:
function 干壞事(event:MouseEvent):void {
干點壞事;
}
mymc.addEventListener(MouseEvent.CLICK,干壞事);
這樣,當(dāng)我們在mymc元件上按下鼠標(biāo)時,會再一次去干點壞事。上面代碼中的MouseEvent是鼠標(biāo)事件的意思,CLICK是單擊的意思,即在元件上單擊就會觸發(fā)事件。
在AS3中改變對象的位置和縮放對象
我們知道,對象在舞臺上位置由其x,y軸的坐標(biāo)來決定。在AS2中有兩個屬性:_x,和_y,用來指定對象的x,y坐標(biāo),這一點在AS3中也是一樣的,只是AS3中去掉了下劃線,屬性名就叫x,y.比如,在AS2中,要將mymc的位置定在(100,100)處,要這樣:
mymc._x = 100;
mymc._y = 100;
而在AS3中是這樣的:
mymc.x = 100;
mymc.y = 100;
在AS2中對象的大小可以用width,height,_xscale,_yscale四個屬性來確定,在AS3中width和height是一樣的,不再說它了。AS3用scaleX和scaleY屬性取代了_xscale,_yscale屬性。同時它們的值也是有區(qū)別的。AS2中的,_xscale, _yscale屬性值是百分比。而AS3中的scaleX和scaleY值是一分比。一分比?這是我發(fā)明的,博士專用名詞,嘿嘿。scaleX和 scaleY值實際就是放大縮小的倍數(shù)。比如,在AS2中 mymc._xscale = 30; 這是將mymc的寬度縮小到原來的30%。
在AS3中 mymc.scalex = 30; 這是將mymc的寬度放大到原來的30倍。要將寬度縮小到30%,就要用
mymc.scale = 0.3;
好了,基礎(chǔ)知識就介紹這么多,本文就當(dāng)是AS3的入門教程吧,介紹的就幾個入門知識。
下面我們就來做一個下雪效果的練習(xí),將上面的知識點運用到實例中。
實例練習(xí)-下雪效果
效果演示:
打開flash cs3,選擇新建flash文件(ActionScript 3.0).
導(dǎo)入一張背景圖片,在場景中放好。
新建一個影片剪輯元件,將舞臺放大到800%,用橢園工具,畫一個無筆觸,填充色為放射將白色左色標(biāo)透明度為100%,右色標(biāo)透明度0%的橢園,大小這 4x3,用選擇工具調(diào)整一下,使其不太規(guī)則。在第30幀插入關(guān)鍵幀。插入引導(dǎo)層,畫一條由上向下的彎曲引導(dǎo)線?;氐降谝粚?,在第一幀和30幀,分別將橢園放到引導(dǎo)線的兩端,建立補間動畫。
如圖:

放大至800%時

打開庫,在元件上右擊,打開連接面板,在類文本框中輸入:xl,確定。

var i:Number = 1;
addEventListener(Event.ENTER_FRAME,xx);
function xx(event:Event):void {
var x_mc:xl = new xl();
addChild(x_mc);
x_mc.x = Math.random()*550;
x_mc.scaleX = 0.2 Math.random();
x_mc.scaleY = 0.2 Math.random();
i ;
if(i>100){
this.removeChildAt(1);
i=100;
}
}
ok,完成。
上面的代碼,在基礎(chǔ)介紹中都已說明了,應(yīng)該一看就明白了。有幾句解釋一下。
x_mc.scaleX = 0.2 Math.random();
x_mc.scaleY = 0.2 Math.random();
0.2 Math.random();會產(chǎn)生0.2-1.2間的隨機數(shù),這就讓雪花縮小到20%到放大到120%間,落下來的雪花,大小不一,顯得更加真實一些。
removeChildAt(n);是刪除已加載的顯式對象,其中的n是已加載的對象的索引號。從addEventListener (Event.ENTER_FRAME,xx);這一句可以看出,運行一幀,就會從庫中加載一個雪花,同時i加,這樣當(dāng)i等于100時,場景中就已有 100個雪花了。這個時候我們用this.removeChildAt(1);將最先加載的雪花刪除。然后將i設(shè)為100,到下一幀,i就又大于100 了,那么要加載1個雪花,同時又刪除了一個雪花,這就達到了一個動態(tài)平衡,場景中始終只有100個雪花。要不然,就會雪越下越多,造成雪災(zāi)就不好了。
相關(guān)文章
flash cs6鼠標(biāo)跟隨效果實現(xiàn)代碼分享
flash cs6想要實現(xiàn)鼠標(biāo)跟隨效果?該怎么制作呢?今天我們就來看看使用as2.0實現(xiàn)鼠標(biāo)跟隨效果的教程,需要的朋友可以參考下2019-05-19- Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來輸入文本,該怎么使用代碼輸入文本呢?請看下文詳細的教程,需要的朋友2018-03-11
- flash as3.0抽象類怎么定義? as3.0中有很多抽象類,該怎么定義抽象類和抽象方法呢?下面我們就來看看簡單的例子,需要的朋友可以參考下http://www.dbjr.com.cn/softs/408402.2018-02-28
flash cs6中怎么使用ActionScript3.0?
flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2018-01-25Flash中怎么實現(xiàn)鼠標(biāo)點擊決定圖像位置?
本教程給大家分享一個Flash小教程,教大家在Flash CS6中怎么實現(xiàn)鼠標(biāo)點擊決定圖像位置?方法很簡單,感興趣的朋友歡迎前來一起分享學(xué)習(xí)2018-01-12- 本教程教腳本之家的ActionScript教程學(xué)習(xí)者在Flash中如何用代碼將圖片放在自己想要的舞臺位置,教程講解的詳細,感興趣的朋友歡迎前來分享學(xué)習(xí)2017-11-20
在Flash CS6中使用with函數(shù)繪制背景圖教程
本教程教腳本之家的ActionScript教程學(xué)習(xí)者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細,方法也不難,非常適合Flash新手入門學(xué)習(xí)2017-11-18Flash怎么設(shè)置元件坐標(biāo)?flash使用代碼設(shè)置元件的坐標(biāo)的教程
Flash怎么設(shè)置元件坐標(biāo)?flash中導(dǎo)如的元件需要添加坐標(biāo),該怎么定位元件坐標(biāo)呢?下面我們就來看看flash使用代碼設(shè)置元件的坐標(biāo)的教程,需要的朋友可以參考下2017-10-11- Flash怎么制作來回搖擺的花朵的動畫?Flash中想要給花朵制作一段搖擺的動畫效果,該怎么制作呢?下面我們就來看看詳細的教程,很簡單,需要的朋友可以參考下2017-05-23
- Flash怎么制作流動七彩色的文字?想要讓文字動起來,該怎么使用flash給文字制作一個流動七彩色的動畫呢?下面我們就來看看詳細的教程,需要的朋友可以參考下2017-04-23