是否有提供排队系统的动作脚本库? 这个系统必须允许我传递对象,我要调用它的函数和参数,如:
Queue.push(Object, function_to_invoke, array_of_arguments)
或者,是否可以(反)序列化函数调用?我如何用给定的参数评估'function_to_invoke'?
提前感谢您的帮助。
答案 0 :(得分:2)
ActionScript 3.0中没有特定的队列或堆栈类型数据结构,但您可以找到一个库(也许是CasaLib),它提供了这些内容。
以下代码段应该适合您,但您应该知道,因为它通过字符串引用函数名称,所以如果引用不正确,您将不会得到任何有用的编译器错误。
该示例使用rest
parameter,它允许您指定任意长度的数组作为方法的参数。
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);
}
答案 1 :(得分: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);
}