如果你對本篇文章很感興趣或是在學習Flash時遇到了什么困難,歡迎到我們的學院論壇來交流。
與AS2.0相比較,AS3.0有了很大的變化,它改變了我們以往的編程習慣。今天我們通過一個非常簡單的入門練習-下雪效果,來認識一下AS3.0,主要了解一下AS3.0與AS2.0的區別。
首先,我們來介紹一下AS3的一些基礎知識。
在AS3中怎樣把庫中的元件加載舞臺
我們知道在AS2中我們可以通過attachMovie將庫中的mc加載到舞臺上。在使用這個命令前我們必須要做的事情是在庫中右擊元件,打開連接面板,然后在標識符框中為元件取上一個連接名,這樣才能用attachMovie()來加載它。現在我們在AS3中來做一下,在庫中右擊元件,打開連接面板,這時你會叫道:“為什么我的標識符框是灰色的,不能用。”不是你的是灰色的,而是在AS3中都是灰色的,因為在AS3中是不能用 attachMovie()來加載元件的。AS3據說是完全面向對象編程的語言了,這就必須要了解類,對象等概念。類就是一類東西的一個名稱,比如動物類就包括了所有動物,動物類下面的所有人就是人類了。又如所有電器可叫電器類,電器類下面又可有電視機類等。對象是某類的一個具體的實例。比如你就是人類中的一個具體的人,你就是人類的一個對象。看到這里你說:“我暈”,我說:“我更暈”。介紹類,對象這些概念看的人不容易看懂,說的人更不容易說清。在 AS3中要加載一個顯式對象(我們在舞臺上看得見的東西),必須要載入一個類,然后要聲明這個類的一個實例,再用new關鍵字創建它,最后用 addChild()將它加載到舞臺。我們將舞臺著是一個展臺,將庫看著是一個倉庫,現在倉庫中有一臺電視機要放到展臺上,該怎樣做呢?首先需要一個電視機類,然后需要聲明一個實例:
var 電視機甲(實例名):電視機(類名)= new 電視機();
addChild(電視機甲);
現在我們回到flash中來看看,現在庫中有一個元件,我們要將它加載到舞臺上,應該這樣做:
在庫中右擊該元件,打開連接面板,我們會看到一個叫類的文本框,在這里給這個類取一個名字,比如myl.確定。這樣我們就加載了一個叫myl的類了。接下來,在場景的幀動作中,輸入:
var mymc:myl = new myl();
addChild(mymc);
mymc.x = 100;
mymc.y = 100;
測試影片,我們會看到,庫中的這個元件已被加載到舞臺的(100,100)坐標處了。
AS3的事件偵聽機制
什么是事件呢?當某件事情發生的時候就做些什么事。這個某件事情就是事件。比如:press,當鼠標按下的時候,這就是一個事件。在AS2中,我們有兩種方式來實現事件驅動。一種是將代碼直接寫在元件上(mc或按鈕)。比如,在場景中有一個叫mymc的影片剪輯元件,我們在其上點右鍵,打開動作面板,輸入:
on(press){
干點壞事;
}
這樣,當我們在mymc元件上按下鼠標時,就會去干點壞事。第二種方法是在幀動作上輸入代碼:
mymc.onPress = function(){
干點壞事;
}
這樣,當我們在mymc元件上按下鼠標時,同樣會去干點壞事。
接下來,我們在AS3中來看看:在元件上點右鍵,打開動作面板,你會看到“無法將動作應用于當前所選內容”。哦嗬,搞不成。在AS3中無法將代碼寫在元件上,只能寫在幀動作上。而AS3的事件偵聽,也有它自已,的格式,不管你樂意不樂意,你都必須這樣做。AS3在事件偵聽格式是:
function 函數名稱(事件對象:事件類型):void
{
// 此處是為響應事件而執行的動作。
}
觸發事件的對象.addEventListener(事件類型.事件名稱, 函數名稱);
必須先聲明一個函數,將要執行的代碼放在其中,然后觸發事件的對象用addEventListener去偵聽事件,如果事件發生則調用函數。還用上面那個干壞事的例子。打開幀動作面板,輸入:
function 干壞事(event:MouseEvent):void {
干點壞事;
}
mymc.addEventListener(MouseEvent.CLICK,干壞事);
這樣,當我們在mymc元件上按下鼠標時,會再一次去干點壞事。上面代碼中的MouseEvent是鼠標事件的意思,CLICK是單擊的意思,即在元件上單擊就會觸發事件。
在AS3中改變對象的位置和縮放對象
我們知道,對象在舞臺上位置由其x,y軸的坐標來決定。在AS2中有兩個屬性:_x,和_y,用來指定對象的x,y坐標,這一點在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屬性。同時它們的值也是有區別的。AS2中的,_xscale, _yscale屬性值是百分比。而AS3中的scaleX和scaleY值是一分比。一分比?這是我發明的,博士專用名詞,嘿嘿。scaleX和 scaleY值實際就是放大縮小的倍數。比如,在AS2中 mymc._xscale = 30; 這是將mymc的寬度縮小到原來的30%。
在AS3中 mymc.scalex = 30; 這是將mymc的寬度放大到原來的30倍。要將寬度縮小到30%,就要用
mymc.scale = 0.3;
好了,基礎知識就介紹這么多,本文就當是AS3的入門教程吧,介紹的就幾個入門知識。
下面我們就來做一個下雪效果的練習,將上面的知識點運用到實例中。
實例練習-下雪效果
效果演示:
歡迎轉載:http://www.kanwencang.com/bangong/20161206/63916.html
文章列表