Есть ли способ передать функцию-член другого класса в качестве параметра функции в as3? - PullRequest
3 голосов
/ 26 мая 2011

Например, у меня есть функция в классе A:

    private function functionA(f:Function):void
    {
        var objB:B;
        objB.f();
    }

Есть ли способ передать нестатическую открытую функцию-член класса B в качестве параметра в функцию A? (из класса А, конечно) Я знаю, что такой синтаксис существует в c ++, но не уверен, что вы можете сделать это в flex / as3

1 Ответ

8 голосов
/ 26 мая 2011

Sure:

var a : A = new A();
var b : B = new B();

a.functionA(b.functionB);

...

private function functionA(f:Function):void
{
    f();

    // or

    f(1, "hi");
}

Экземпляр, связанный с функцией, переносится вместе с ней. Если вам нужно вызвать функцию в другом экземпляре, вызовите f.apply(instance, [1, "hi"])

AS3 не имеет понятия о делегатах или функциях-сигнатурах как тип, поэтому вам нужно знать аргументы для передачи.

...