本文和大家重点讨论一下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分页控件的两种分页形式用法