術語匯編 全面認識Flex函數用法
本文和大家重點討論一下Flex函數的用法,Flex函數是封裝起來的一段特定的代碼塊,目的是為了更好的重用代碼,更容易維護,希望本文的介紹能讓你有所收獲。
Flex函數
Flex函數:Flex函數是封裝起來的一段特定的代碼塊,目的是為了更好的重用代碼,更容易維護.
1.定義Flex函數
格式:作用域functionFlex函數名(參數1,參數2,....):返回類型
{
Flex函數體
}
Code
- /*************************************
- *創建獲取全名的Flex函數
- *************************************/
- privatefunctionGetFullName(fName:String,lName:String):String
- {
- //組合名字
- varfullName:String=fName+""+lName;
- //返回全名
- returnfullName;
- }
2.Flex函數調用
格式:Flex函數名(參數1,參數2,參數3,...);
Code
- //包
- package
- {
- importflash.display.Sprite;
- //類名
- publicclassFunctionExampleextendsSprite
- {
- /*************************************
- *構造Flex函數
- *************************************/
- publicfunctionFunctionExample()
- {
- //調用Flex函數
- varfullName:String=GetFullName("Tom","Green");
- //輸出
- trace("全名是:"+fullName);
- }
- /*************************************
- *創建獲取全名的Flex函數
- *************************************/
- privatefunctionGetFullName(fName:String,lName:String):String
- {
- //組合名字
- varfullName:String=fName+""+lName;
- //返回全名
- returnfullName;
- }
- }
- }
#p#3.Flex函數作用域:
Flex函數是有權限,分為公有和私有.公有關鍵字public,私有關鍵字private.
Code
- package
- {
- publicclassSongInfo
- {
- /************************************
- *根據歌曲名獲取歌手信息
- **/
- publicfunctionGetSinger(songTitle:String):String
- {
- varsinger:String="";
- switch(songTitle)
- {
- case"改變自己":
- singer="王力宏";
- break;
- case"夜曲":
- singer="周杰倫";
- break;
- case"知足":
- singer="五月天";
- break;
- case"就是愛你":
- singer="陶喆";
- break;
- }
- returnsinger;
- }
- /************************************
- *根據歌曲名獲取歌手信息
- **/
- publicfunctionGetAlbumInfo(songTitle:String):String
- {
- returnGetAlbum(songTitle);
- }
- /************************************
- *根據歌曲名獲取歌手信息
- **/
- privatefunctionGetAlbum(songTitle:String):String
- {
- varalbum:String="";
- switch(songTitle)
- {
- case"改變自己":
- album="改變自己";
- break;
- case"夜曲":
- album="十一月的蕭邦";
- break;
- case"知足":
- album="知足";
- break;
- case"就是愛你":
- album="太平盛世";
- break;
- }
- returnalbum;
- }
- }
- }
4.訪問上面的Flex函數:
Code
- package
- {
- importflash.display.Sprite;
- publicclassFunctionScopeExampleextendsSprite
- {
- /*************************************
- *構造Flex函數
- *************************************/
- publicfunctionFunctionScopeExample()
- {
- //調用Flex函數
- GetSongInfo("夜曲");
- }
- /*************************************
- *獲取歌曲信息
- *************************************/
- privatefunctionGetSongInfo(song:String):void
- {
- //聲明變量
- varsinger:String="";
- varalbum:String="";
- //實例化
- varsongInfo:SongInfo=newSongInfo();
- //獲取歌手信息
- singer=songInfo.GetSinger(song);
- //獲取所屬專輯
- album=songInfo.GetAlbumInfo(song);
- //輸出結果
- trace("歌曲名:"+song);
- trace("歌手:"+singer);
- trace("所屬專輯:"+album);
- }
- }
- }
返回結果:
歌曲名:夜曲
歌手:周杰倫
所屬專輯:十一月的蕭邦#p#
5.Flex函數的參數
5.1.值參數:
值參數傳入Flex函數體后復制一個副本在Flex函數內使用不會影響外部變量的值.
Code
- publicfunctionArgumentsExample()
- {
- //值參數
- varfName:String="Lalo";
- trace("傳遞之前的變量值:"+fName);
- PassPrimitives(fName);
- trace("傳遞之后的變量值:"+fName);
- }
- /************************************
- *值傳遞參數
- **/
- privatefunctionPassPrimitives(fName:String):void
- {
- fName="hello!"+fName;
- trace("Flex函數返回值:"+fName);
- }
- /*返回值
- 傳遞之前的變量值:Lalo
- Flex函數返回值:hello!Lalo
- 傳遞之后的變量值:Lalo
- */
引用參數:引用參數傳入Flex函數體后部會產生一個副本,而是傳遞一個參數的引用,所以Flex函數內部所做的修改會影響到外部引用變量的值.
Code
- publicfunctionArgumentsExample()
- {
- //引用參數
- varmyName:Object={fName:"Lalo"};
- trace("傳遞之前的變量值:"+myName.fName);
- PassByRef(myName);
- trace("傳遞之后的變量值:"+myName.fName);
- }
- /************************************
- *引用傳遞參數
- **/
- privatefunctionPassByRef(myName:Object):void
- {
- myName.fName="Tom";
- trace("Flex函數返回值:"+myName.fName);
- }
- /*返回結果:
- 傳遞之前的變量值:Lalo
- Flex函數返回值:Tom
- 傳遞之后的變量值:Tom
- */
#p#5.3默認參數:
定義了默認參數后,傳值時可以將其省略,但是默認參數必須放在非默認參數后面.
Code
- publicfunctionArgumentsExample()
- {
- //默認參數
- DefaultArguments(2,5);
- }
- /************************************
- *默認參數
- **/
- privatefunctionDefaultArguments(x:int,y:int,z:int=10):void
- {
- trace(x,y,z);
- }
- /*返回結果:2510*/
5.4arguments對象參數:
arguments對象是一個數組,保存著所有傳遞過來的參數信息,可以應用arguments對象獲得所有的參數信息,arguments.length屬性獲得參數的個數.
Code
- //arguments參數
- ArgumentsObject(10,20,30);
- /************************************
- *arguments參數
- **/
- privatefunctionArgumentsObject(x:int,y:int,z:int):void
- {
- trace("輸出所有參數:");
- for(vari:uint=0;i<arguments.length;i++)
- {
- trace(arguments[i]);
- }
- }
/*返回結果
10
20
30
*/
5.5...(rest)參數:
接受多個以逗號分割的參數.
Code
- /************************************
- *(rest)參數
- **/
- privatefunctionRestArguments(args):void
- {
- trace("輸出所有參數:");
- for(vari:uint=0;i<args.length;i++)
- {
- trace(args[i]);
- }
- }
- //(rest)參數
- RestArguments(10,20,30);
/*返回結果:
10
20
30
*/
6.遞歸Flex函數:
反復調用自身的Flex函數.
Code
- publicfunctionSelfFunctionExample()
- {
- trace("遞歸Flex函數的結果:"+SelfFunction(6));
- trace(GetFullName());
- }
- *遞歸Flex函數
- **/
- publicfunctionSelfFunction(x:int):int
- {
- if(x==0)
- {
- return0;
- }
- else
- {
- return2*SelfFunction(x-1)+x*x;
- }
- }
返回結果:
遞歸Flex函數的結果是:318
【編輯推薦】
- FlexBuilder快捷鍵使用說明
- Flex2.0Beta1新功能出爐
- 揭露Flex2.0的幾大誤區
- FlexBuilder3.0與Eclipse3.4的完美結合
- 剖析Flex DataGrid分頁控件的兩種分頁形式用法