Actionscript 3 AS3参数
为什么您认为下面的代码不起作用? 为使其工作,您将更改/添加哪些内容 谢谢你的帮助Actionscript 3 AS3参数,actionscript-3,function,arguments,Actionscript 3,Function,Arguments,为什么您认为下面的代码不起作用? 为使其工作,您将更改/添加哪些内容 谢谢你的帮助 function TraceIt(message:String, num:int) { trace(message, num); } function aa(f:Function, ...args):void { bb(f, args); } aa(TraceIt, "test", 1); var func:Function = null; var argum:Array = null;
function TraceIt(message:String, num:int)
{
trace(message, num);
}
function aa(f:Function, ...args):void
{
bb(f, args);
}
aa(TraceIt, "test", 1);
var func:Function = null;
var argum:Array = null;
function bb(f:Function, ...args):void
{
func = f;
argum = args;
exec();
}
function exec()
{
func.apply(null, argum);
}
我得到一个ArgumentError(错误#1063):
…因此,传递的参数(argum)无法提供所有传递的参数
..请保持功能结构(流量)完整。。我需要一个以相同顺序使用相同函数的解决方案。。我必须将参数传递给一个变量,并在上面的exec()方法中使用它们
关于当TraceIt()最终被调用时,将使用1个数组参数调用它,而不是字符串和int参数
您可以将TraceIt()更改为:
或者您可以将exec()更改为:
…正如通过“test”,1时所显示的那样,最终得到的数组的第一个值是“test,1”。不过,此解决方案在普通情况下无法正常工作。将bb函数更改为如下所示:
function bb(f:Function, args:Array):void
{
func = f;
argum = args;
exec();
}
现在,它接受可变数量的参数,但您正在从aa传入一个数组(参数)。好的,下面是解决方案。。打破我的头后:) 通过这种方式,您可以将参数作为变量传递给不同的函数并执行它们
感谢大家花时间帮助……谢谢,但这是实际代码的一个非常简单的版本。我的意思是TraceIt代表传递的任何函数。。。意思是它一直都不一样..将其添加到上面的帖子。。谢谢
function TraceIt(args:Array)
{
trace(args[0], args[1]);
}
function exec()
{
func.apply(null, argum[0].toString().split(","));
}
function bb(f:Function, args:Array):void
{
func = f;
argum = args;
exec();
}
function TraceIt(message:String, num:int)
{
trace(message, num);
}
function aa(f:Function=null, ...args):void
{
var newArgs:Array = args as Array;
newArgs.unshift(f);
bb.apply(null, newArgs);
}
aa(TraceIt, "test", 1);
var func:Function = null;
var argum:*;
function bb(f:Function=null, ...args):void
{
func = f;
argum = args as Array;
exec();
}
function exec():void
{
if (func == null) { return; }
func.apply(this, argum);
}