Flash ActionScript3.0 (3)函數之返回語句

如果希望函數有返回值,必須使用return語句
下面的函數除了輸出信息以外,還返回了輸出的信息。這時函數的返回類型從void類型變成了“*”類型: var s:String = trace("hello");
function traceMsg(msg:*)
{
trace(msg);
return msg;
使用return語句還可以中斷函數的執行,這個方式經常會用在判斷語句中。如果某條件爲false,則不執行後面的代碼,直接返回。
下面的代碼判斷函數的參數是不是數字,如果不是數字,就使用return語句直接返回,而不執行後面的代碼:
function area(r:*):void
{
var b:Boolean = r is Number;
if(!b)
return;
trace("後面的代碼");
這裏定義的函數把r作爲參數,在函數中,首先判斷參數是否數字,如果不是數字利用return語句,直接退出該函數,後面的代碼就不執行了。
比較下面調用函數的結果,前者能執行函數內的輸出語句,後者則不能:
area(7);
area("7");
 在有些函數中需要編寫多個返回語句,如,在條件語句中每一個條件分支都可以對應一條返回語句。
下面的方法根據參數來返回不同的實例:
function factory(obj:String):Load {
if (obj=="xml") {
trace("return LoadXml instance");
return new LoadXml ;
} else if (obj=="sound") {
trace("return LoadSound instance");
return new LoadSound ;
} else if (obj=="movie") {
trace("return LoadMovie instance");
return new LoadMovie ;
} else {
trace("error");
}
怎樣編寫函數
  我們通過編寫一個求距離的函數例子,來說明函數的編寫過程。
  首先要確定函數的參數,由於點在Flash中是用二維座標表示的,所以每個點就需要兩個參數,求兩點之間的距離函數就需要4個函數,由於座標和距離都是用數字表示的,所以參數的類型是Number類。
  函數的初步框架:
function distance(x1:Number,y1:Number,x2:Number,y2:Number):Number
{
return 0;
}
函數中加入了返回0的return語句,這個返回語句是必須的,因爲只有返回了Number類型的值,測試程序時纔不會出錯。
要測試函數是否正確只需調用一下函數。
var dis:Number = distance(0,0,100,100);
trace(dis);
檢測函數的定義沒有錯誤,就可以在函數內一步步的增加代碼。對於複雜的函數,每增加一些代碼後,都要及時進行測試,有錯誤發生時可以及時改正。
向函數內添加代碼:
function distance(x1:Number,y1:Number,x2:Number,y2:Number):Number
{
var x:Number = x2 - x1;
var y:Number = y2 - y1;
trace("x="+ x,"y="+ y);
return 0;
上面往函數內增加了x和y的座標之差,還加入了 trace()函數來調試結果。
調用函數後會在輸出面板中顯示x和y的值,通過簡單的計算就可以確定x和y值的正確性。
確定無誤後,可以把trace()函數註釋掉。
最後在函數內加入求距離的代碼:
function distance(x1:Number,y1:Number,x2:Number,y2:Number):Number
{
var x:Number = x2 - x1;
var y:Number = y2 - y1;
// trace("x="+ x,"y="+ y);
var dis:Number = Math.sqrt(x * x + y * y);
return dis;
當調用上面的函數後,就可以輸出兩點間的距離。但是由於點(0,0)到點(100,100)的距離手工很難計算,因此不能保證求出的距離是否正確。
這時最好輸出知道距離的兩點,來檢測結果是否正確,根據勾三股四弦五的常識,可在函數內輸入下面的座標來計算:
var dis:Number = distance(0,0,3,4);
trace(dis); 
如果輸出的結果爲5,就說明求距離的函數編寫好了。


 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章