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 に答える