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 を使用しても問題は見つかりませんでした。