1

SWF の公開 API の信頼性を高めるために、私は通常、コールバックを try/catch ブロックでクロージャーにラップします。

private function addCallback(functionName:String, closure:Function):void {
    ExternalInterface.addCallback(functionName, wrapEventHandler(closure));
}

private function wrapEventHandler(closure:Function):Function {
    var self:Main = this;
    return function(...arguments):* {
        try {
            return closure.apply(self, arguments);
        } catch (error:Error) {
        // Print error report here
        }
    }
}

「クロージャ」で例外が発生すると、エラー レポートが出力されます。

「self」の代わりに「null」を使用しても問題なく動作することに気付きました。

closure.apply(null, arguments);

この場合、「null」を使用しても安全ですか?

ExternalInterface に登録するコールバックは静的関数ではありません。Main のクラス フィールドを使用します。

null、NaN、およびselfで問題なく動作します。NaN/null を使用しても問題は見つかりませんでした。

4

1 に答える 1