• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS基础篇>AS 3.0>文章内容
  • AS3学习笔记
  • 来源:蓝色理想 作者:eidiot 2007-06-07 【

首先,AS3里function的参数可以有默认值了。

public function TestFunc(){
myFunc();
}
private function myFunc(para1:int=10,para2:String="str"):void{
trace(para1 + " , " + para2); //10 , str
}

AS3里不能给出多余的参数,

public function TestFunc(){
myFunc(2,"3",4);
}
private function myFunc(para1:int,para2:String):void{
trace(para1 + " , " + para2);
}

编译器给出参数不匹配的错误:ArgumentError: Error #1063: Argument count mismatch on TestFunc/TestFunc::myFunc(). Expected 2, got 3.

这样以前那种用 arguments 拿到不固定参数的方法就不能用了。AS3给出一个新的关键字:… (rest) parameter

public function TestFunc(){
myFunc(2,"3",4,"5",true);
}
private function myFunc(para1:int,para2:String,... more):void{
trace(para1 + " , " + para2); //2 , 3
trace(more); //4,5,true
}

在固定的参数后面跟一个 “…” 和一个表达式(如例子中的“more”),“…” 后面所有的参数将被放到以该表达式命名的数组中。注意 “…” 必须是最后一个参数。

如果使用 “…” arguments 就不可用了,自然也就拿不到 arguments.callee(对当前正在执行的函数的引用),所以在确定不使用 callee 的情况下才能用 “…”。

提到 arguments ,arguments.caller 已经被 “remove” 了。要想拿到 caller 需要把调用函数的 callee 作为参数传给被调用函数。官方的例子:

 

package {
import flash.display.Sprite;

public class ArgumentsExample extends Sprite {
private var count:int = 1;

public function ArgumentsExample() {
firstFunction(true);
}

public function firstFunction(callSecond:Boolean) {
trace(count + ": firstFunction");
if(callSecond) {
secondFunction(arguments.callee);
}
else {
trace( "CALLS STOPPED");
}
}

public function secondFunction(caller:Function) {
trace(count + ": secondFunction\n");
count++;
caller(false);

}
}


上一页 1 2 3 45 6 下一页

上一篇:AS3应用程序模块化开发与ApplicationDomain   下一篇:AS3声明舞台元素为类变量
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)