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