as3中的函数

主要内容 :

/*20090503*/
//test();//函数测试 arguments对象的使用
//testA(1,2,[1,2],{name:"wangdh"});//函数传入任意多参数的用法 ...rest;
//funTest();//函数类型测试
//fun_one();//函数使用技巧一:设立代理函数
//fun_two();//函数使用技巧二:建立函数执行队列
//fun_three();//函数使用技巧三:利用函数返回函数
//fun_four();//函数使用技巧四:函数动态添加实例属性
//fun_five();//函数使用技巧五:函数动态添加实例方法

将以下代码复制到上上贴的函数中

/****************20090503*************************/
//函数测试 arguments对象的使用
public function test(a:int=1,b:int=2,c:int=3):void {
trace(a + b + c);
trace("参数长度:" + arguments.length);
if (a + b + c > 0) {
arguments.callee(a - 1,b - 1,c - 1);
}
}
//函数类型测试
public function funTest():void {
trace(getQualifiedClassName(testA));//输出函数内置类型对象
trace(getQualifiedSuperclassName(testA));//输出函数类的父类
trace(testA is Function);//是否是函数类型
trace(testA is Object);//是否是对象
/***********************************************/
var bFun:Function = function():void{trace("this is bFun");};
trace(getQualifiedClassName(bFun));//bFun类型
trace(bFun is Function);//是否是函数类型
trace(bFun is Object);//是否是Object类型
}
//传入任意多参数的使用(...rest)
public function testA(...paras):void {
trace("传入参数个数:"+paras.length);
for(var i in paras){;
trace("第"+i+"个为"+paras[i]);
}
}
/*函数使用技巧*/
//1.设置代理函数对象
public function fun_one():void {
var kingdaFunc:Function;
var sex = "male";
if (sex=="male") {
kingdaFunc = maleFunc;
} else if (sex=="female") {
kingdaFunc = femaleFunc;
}
kingdaFunc();
function maleFunc():void {
trace("I am a boy");
}
function femaleFunc():void {
trace("I am a girl");
}
}
//2.设置函数运行队列
public function fun_two():void {
//保存函数队列
var funArray:Array = new Array();
funArray.push(funcA);
funArray.push(funcB);
funArray.push(funcC);
function funcA():void {
obj.funcA = true;
trace("funcA执行");
}
function funcB():void {
obj.funcB = true;
trace("funcB执行");
}
function funcC():void {
obj.funcC = true;
trace("funcC执行");
}
//共操作的对象
var obj:Object = new Object();
//函数执行次数,此参数在实际中可以改变
var execNum:Number = funArray.length;
//核心步骤:函数队列执行,实际中的可以把它包装成一个函数,或一个类的实例
for(var i:Number = 0;i<execNum;i++){;
funArray[i](obj);
for(var str in obj){;
trace(str+":"+obj[str]);
}
}
}
//3.利用函数返回函数
public function fun_three():void {
chooseFuncBy("A")(" A function has only one parameter;");
chooseFuncBy("B")(" B function has two parameters","No 2 parameter");
chooseFuncBy("wu")(" I choose A function~","I choose B function","I choose V function");
var withObj:Object = new Object();
var myObj:Object = {name:"wangdh",blog:"dd"};
chooseFuncBy(withObj)(myObj);
function chooseFuncBy(input:*):Function {
//利用参数的种类确定返回的函数
if (!(input is String)) {
return objFunc;
}
//利用参数内容来确定返回的函数
switch (input) {
case "A" :
return aFunc;
case "B" :
return bFunc;
default :
return kingdaFunc;
}
//更多延伸运用:利用参数个数、is确定不同Class的实例来选择函数
}
function aFunc(nS:String):void {
trace("aFunc"+nS);
}
function bFunc(nS:String,nP:String):void {
trace("bFunc"+nS+"Sec:"+nP);
}
function kingdaFunc():void {
trace("Welcome!!");
}
function objFunc(obj:Object):void {
trace("objFunc():");
for(var i in obj){;
trace(i+":"+obj[i]);
}
}
}
//函数技巧四:函数动态添加实例属性
public function fun_four():void {
var shot:Function = function():void{
shot['times']++;
trace("shot times:"+shot['times']);
};
shot['times'] = 0;
shot();
shot();
shot();
}
//函数技巧五:函数对象动态添加实例方法
public function fun_five():void {
var shot:Function = function():void{
shot['times']++;
shot['reload']();
trace("shot times:"+shot['times']);
};
shot['times'] = 0;
shot['reload'] = function():void{
trace("reload:"+this['times']);
if(this['times']>3){
this['times'] = 1;
}
};

shot['reload']();
shot();
shot();
shot();
shot();
shot();
shot();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值