1

是否有提供排队系统的 actionscript 库?
该系统必须允许我传递对象、我想在其上调用的函数和参数,例如:

Queue.push(Object, function_to_invoke, array_of_arguments)

或者,是否可以(反)序列化函数调用?我将如何使用给定的参数评估“function_to_invoke”?

在此先感谢您的帮助。

4

2 回答 2

2

ActionScript 3.0 中没有可用的特定队列或堆栈类型数据结构,但您可能能够找到一个库(也许是CasaLib)来提供这些方面的内容。

以下代码段应该对您有用,但您应该知道,由于它通过字符串引用函数名称,因此如果引用不正确,您将不会收到任何有用的编译器错误。

该示例使用允许您指定任意长度的数组作为方法的参数的参数rest

function test(... args):void 
{
    trace(args);
}

var queue:Array = [];
queue.push({target: this, func: "test", args: [1, 2, "hello world"] });
queue.push({target: this, func: "test", args: ["apple", "pear", "hello world"] });

for (var i:int = 0; i < queue.length; i ++) 
{
    var queued:Object = queue[i];
    queued.target[queued.func].apply(null, queued.args);
}
于 2012-06-08T11:53:14.010 回答
1

当然,这类似于 JavaScript

const name:String = 'addChild'
    , container:Sprite = new Sprite()
    , method:Function = container.hasOwnProperty(name) ? container[name] : null
    , child:Sprite = new Sprite();
if (method)
  method.apply(this, [child]);

因此查询方法可能如下所示:

function queryFor(name:String, scope:*, args:Array = null):void
{
    const method:Function = scope && name && scope.hasOwnProperty(name) ? scope[name] : null
    if (method)
        method.apply(this, args);
}
于 2012-06-08T11:47:00.867 回答