AS基礎(chǔ)教程整理第6/13頁
更新時間:2007年03月22日 00:00:00 作者:
第七章 可以重復(fù)的函數(shù)(function)
不是用幾個例子來示范嗎?怎么還不講例子???是的,下一個例子要用到函數(shù),所以再補(bǔ)充點(diǎn)函數(shù)知識。(上當(dāng)了吧?chocobo也上當(dāng)了,開始翻譯的時候沒想到這篇東西這么長的,這才講完第一個例子呢 55~)
一個函數(shù)是下面這個樣子的:
function funcName () {
statements
}
在ACTION面板里面,function這個單詞是變色的,F(xiàn)LASH認(rèn)識這個單詞,它代表后面的就是描述函數(shù)的內(nèi)容
funcName是函數(shù)的名字,當(dāng)你以后要用這函數(shù)的時候,就要敲這個名字了(是的,建函數(shù)就是為了以后反復(fù)調(diào)用它)
()小括號里面是參數(shù),什么是參數(shù)一會再講
{}大括號里面的就是函數(shù)所要完成功能的一句句代碼。
當(dāng)我們建立函數(shù)之后,函數(shù)并不運(yùn)行,只在你用函數(shù)的名字調(diào)用它出來,才正式開始運(yùn)行
例如我們有這樣一個函數(shù)
function sayHi () {
trace("Hi!");
}
當(dāng)我們在FLASH某幀需要sayHi的時候,輸入AS:
sayHi();
是不是和最常見的stop();還有play();一樣???因?yàn)樗鼈兌际呛瘮?shù)嘛
sayHi函數(shù)真是弱智,來個有意義的函數(shù)吧。先在場景里放好一個名字叫ball的instance(千萬記得要給instance輸入名字,否則函數(shù)運(yùn)行沒結(jié)果別找我)
在第一幀輸入這樣一個函數(shù):
function moveBall () {
ball._x += 10; // 怕有人不懂,解釋一下,_x代表ball的橫坐標(biāo),ball._x +=10 的意思是ball._x = ball._x + 10 ,這樣省略的寫法還有 -= *= /= 等等
ball._y += 10;
}
再做一個按鈕,按鈕的AS:
on (release) {
moveBall();
}
好的,運(yùn)行,從AS你可以看到,每點(diǎn)一下按鈕,執(zhí)行一次函數(shù),而函數(shù)讓小球下斜下移動。(FLASH的坐標(biāo)軸,原點(diǎn)在左上角)
為什么要建立函數(shù)呢,就是想更有效率,現(xiàn)在有這個函數(shù)已經(jīng)不用每移動一下寫一次AS了,但還是不夠,我們需要更有擴(kuò)展性(flexibility)的函數(shù)
這個函數(shù)只能移動叫ball的MC,只能向固定的方向移動固定的距離,我們需要可以移動任何MC,向任何方向移動任何距離的函數(shù),這樣可以省卻很多輸入AS的工夫(這就叫一勞永逸,呵呵)
我們的新函數(shù)有三個地方是每次調(diào)用都不一樣的
1、移動的那個MC的名字
2、水平移動的距離
3、垂直移動的距離(呵呵,用極坐標(biāo),也可以把2、3說成移動的距離,和移動的角度,不過大家都不習(xí)慣極坐標(biāo))
為了告訴函數(shù)這些變化的地方,我們需要參數(shù)(parameters),參數(shù)在定義函數(shù)的時候就要輸入,我們的函數(shù)改寫好了:
function moveClip (theClip, xDist, yDist) {
theClip._x += xDist;
theClip._y += yDist;
}
當(dāng)我們要實(shí)現(xiàn)原來函數(shù)功能的時候,現(xiàn)在調(diào)用新函數(shù)就變成
moveClip (ball, 10, 10);
定義函數(shù)的時候function moveClip (theClip, xDist, yDist) {
這里的theClip等參數(shù)(parameters)只是定義,本質(zhì)上說是不存在的,因?yàn)闆]有內(nèi)容嘛
當(dāng)我們用moveClip (ball, 10, 10);調(diào)用的時候,ball就輸入到theClip中去了,這里的ball稱為arguments(偶讀得書少,不會翻譯)
arguments可以是一個變量,也可以是一個表達(dá)式(例如"a"+"b",先得出結(jié)果再傳輸給函數(shù))只要用逗號隔開各個參數(shù)就行
函數(shù)如何結(jié)束呢
正常來說,函數(shù)運(yùn)行完 {}里所有語句結(jié)束,我們也可以用一句AS:return; 讓它中途結(jié)束,例如:
function say(msg) {
return;
trace(msg);
}
這個函數(shù)被調(diào)用的時候?qū)⑹裁炊疾蛔鼍徒Y(jié)束
return還有更重要的用途:
function sqr(x) { // Squares a number 平方
return x * x;
}
a=sqr(2); //a將會被賦予2的平方 4
return更重要的用途就是返回數(shù)據(jù)
在AS里面,有個內(nèi)建的函數(shù)Math.sqrt(就是說你敲入的時候會變色),其功能和我們剛才做的sqr函數(shù)是一樣的,現(xiàn)在你該知道內(nèi)建函數(shù)也沒什么神秘的,我們一樣可以做出相同功能的來。
相關(guān)文章
AS3.0實(shí)例學(xué)習(xí) 熟悉xml的運(yùn)用
AS3.0實(shí)例學(xué)習(xí) 熟悉xml的運(yùn)用...2007-12-12SWF自適應(yīng)布局技巧 (Rapid Flash Development)快速Flash開發(fā)
當(dāng)我們開發(fā)全站式Flash應(yīng)用時,希望呈現(xiàn)一個鋪滿瀏覽器屏幕的Flash.2008-12-12