我一直想知道这个问题: 在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!
答案 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);
}