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);
    }