0

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

方法(参数 1,参数 2);

但是当你的方法需要一堆它们时会发生什么?而不是像这样传递它们:method(p1,p2,p3,p4,p5,p6,p7,p8);

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

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

这样,您可以确保使用正确数量和类型的参数调用 method()。还要避免使用大量参数。

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

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

从 as3 开始:

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

但是,我不能有一个严格的方法来知道我可以接收到哪些参数,所以 Object 可以包含任何东西。

所以我的问题是,将大量参数从 js 传递到 as3 的最佳方法是什么,而不需要一个带有大量参数的方法,也没有这个可以包含任何属性的“神奇”对象。谢谢!。

4

1 回答 1

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); 
}
于 2013-06-07T17:01:05.297 回答