是否有提供排队系统的 actionscript 库?
该系统必须允许我传递对象、我想在其上调用的函数和参数,例如:
Queue.push(Object, function_to_invoke, array_of_arguments)
或者,是否可以(反)序列化函数调用?我将如何使用给定的参数评估“function_to_invoke”?
在此先感谢您的帮助。
是否有提供排队系统的 actionscript 库?
该系统必须允许我传递对象、我想在其上调用的函数和参数,例如:
Queue.push(Object, function_to_invoke, array_of_arguments)
或者,是否可以(反)序列化函数调用?我将如何使用给定的参数评估“function_to_invoke”?
在此先感谢您的帮助。
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);
}
当然,这类似于 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);
}