これはちょっとクレイジーですが、他の方法は考えられません。キーを弱参照するように設定されたディクショナリにリクエストオブジェクトを配置し、キーが削除されたかどうかを間隔で確認できます。
ただし、最初に何が起こるかはわかりません。SWF 自体が破棄されるか、辞書が消去されるかのどちらかです。また、関数が 1 回限りのものであるため、リクエスト オブジェクトへの参照が削除されない可能性もあります。これは、SWF 全体と一緒に削除されると想定されるためです。
私が知っているもう1つのことは、キャッチされていないエラーイベントがからのイベントをキャッチすることですnavigateToURL
-あまり役に立ちませんが、少なくともそれが機能しなかった場合の兆候を示す可能性があります.
考えられるもう 1 つの簡単な方法は、ボタンを 1 ~ 2 秒間無効にすることです。それが機能した場合、誰も遅延に気付かず、そうでない場合は、あまり頻繁に押すことができません.
private var _requestStore:Dictionary = new Dictionary(true);
private var _timer:Timer = new Timer(10);
. . .
_timer.addEventListener(TimerEvent.TIMER, timerHandler);
. . .
public function openURL(url:String):void
{
var request:URLRequest = new URLRequest(url);
_requestStore[request] = true;
_timer.start();
navigateToURL(request);
}
private function timerHandler(event:TimerEvent):void
{
var found:Boolean;
for (var o:Object in _requestStore)
{
found = true;
break;
}
if (!found) // the request got disposed
}