Onu*_*rım 2 arguments function actionscript-3
为什么你认为下面的代码不起作用?你会改变/添加什么使它工作?
任何帮助表示赞赏..
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);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个ArgumentError(错误#1063):
Argument count mismatch on test_fla::MainTimeline/TraceIt(). Expected 2, got 1.
Run Code Online (Sandbox Code Playgroud)
..因此,传递的参数(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);
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以将参数作为变量传递给不同的函数并执行它们.
感谢大家花时间帮忙......