0

我需要在两个单独.swf的 sAB. 我有一个interface,IRequest使用以下方法:

public interface IRequest {
    function get packagePath():String;
    function get className():String;
    function get functions():Vector.<String>;
    function get parameters():Array;
    function execute():void;
}

我在一个类中实现它,Request. 可以按如下方式创建新请求: RequestManager.addToQueue(new Request("com.myPackage", "MyClass", "instance.method1.method2", "parameter"));

这将Request使用提供的packageclass-namelist of functionsparameters.

一系列function-call 和决定 afunction实际上是 afunction还是property( public function getMyThing():Objectvs public function get myThing():Object) 会使事情变得复杂。

例如,如果需要的话,事情就足够简单Requestnew Request("com.myPackage", "MyClass", "getInstance", "");

调用该方法很简单:

var theClass:Class = getDefinitionByName(packagePath + "." + className) as Class;
var theInstance:Object = theClass[functions[0]](); // Invokes com.myPackage.MyClass.getInstance()

getInstance但是,如果是property/ ,这将不起作用getter。此外,如果有许多方法调用,我不确定如何在一次调用中调用链。例如:

var theClass:Class = getDefinitionByName(packagePath + "." + className) as Class;
var object = theClass[functions[0]]()[functions[1]()[functions[2](); // Invokes com.myPackage.MyClass.firstMethod.secondMethod.thirdMethod()

但是,我需要动态地执行此操作,并且我没有看到动态链接这些[,的简单方法]

如果有人知道我能够从 a 调用方法的好方法String,那基本上就是我想要做的。

"com.myPackage.MyClass.firstMethod.secondMethod.thirdMethod()", parameters

谢谢您的帮助,

4

1 回答 1

1

我认为在调用它之前检查该参数是否实际上包含一个函数会有所帮助。

var theClass:Class = getDefinitionByName(packagePath + "." + className) as Class;

if(theClass[functions[0]] is Function){
    var theInstance:Object = theClass[functions[0]](); // Invokes com.myPackage.MyClass.getInstance()
}
于 2012-09-06T06:59:36.477 回答