从js传递as3回调参数的最佳方法是什么?

时间:2013-06-07 16:22:08

标签: javascript actionscript-3

我一直想知道这个问题: 在as3中,当你调用方法或函数时,你会以这种方式传递参数:

方法(param1,param2);

但是当你的方法需要一堆它们时会发生什么?而不是像以下一样传递它们: 方法(P1,P2,P3,P4,P5,P6,P7,P8);

更好的方法是创建一个包含所有这些参数的模型对象,然后传递整个模型:

model : Model = new Model();
model.p1 = "something";
model.p2 = "another something";
...
method(model);

通过这种方式,您可以确保使用正确的参数数量和类型调用method()。但也避免使用大量参数。

然而,当使用JS回调时,会出现两个问题:传递整个参数列表: 方法(...,p8);这是一个糟糕的方式,但至少我有一种严格的方法来强制使用正确的参数调用回调。另一个解决方案是传递一个模型,但是我不能从js传递一个定义的as3对象,我能做的最多就是传递一个js对象:

$("as3Component").as3Callback({p1 : "something", p2 : "another something"});

和as3:

as3Callback(params : Object)
{
    trace(params.p1); 
}

然而,我无法通过严格的方式知道我可以接收的参数,因此对象可以包含任何内容。

所以我的问题是,将大量参数从js传递到as3的最佳方法是什么,而没有一个包含大量参数的方法,并且没有可能包含任何属性的“魔术”对象。 THX!

1 个答案:

答案 0 :(得分:1)

将对象作为参数传递绝对没问题。

您只需要对参数进行某种验证,例如:

function as3Callback(params : Object):void
{
    params.p1 = params.p1 || "default value for p1";
    params.p2 = params.p2 || "default value for p2";
    params.p3 = params.p3 || "default value for p3";
    params.p4 = params.p4 || "default value for p4";

    ...

    trace(params.p1); 
}
相关问题