2009-08-28 3 views

答えて

4

setTimeout(closure、0)は新しいイベントスタックを作成しています。私はこのソリューションがあなたのために働いていない場合、あなたの目的を理解していません。あなたが達成しようとしている目標は何ですか?

Flexには、呼び出しを遅延させて新しい実行スタックを作成する、ENTER_FRAMEイベント、Timer、callLater、setTimeout、setIntervalなどがあります。

現在のスタックにコードを挿入しようとしていますか?その場合は、http://en.wikipedia.org/wiki/Active_objectのようなものを見る必要があります。アイデアは、関数(クロージャ)を配列にプッシュし、アクティブなオブジェクトコントローラは、前のオブジェクトが完了するまで実行されたときに次のオブジェクトをリストから引き出します。それは最も簡単なケースです。独自のスケジュール管理システムを使用して、高、中、低といった優先順位のスタックを持つ、より複雑なものを書くことができます。 (たとえば、長すぎると待ってからローに昇格するなど)。

しかしねえ!悪魔は詳細です。目標は何ですか?

+0

ありがとう - 私があなたが言及した機能を調べます。 そして、目標は基本的に私の意図を決めることです(「現在のイベントハンドラが終了した後に不確定な時間が実行されるようにクロージャを実行スタックにプッシュしたい」)。コード内でクリアし、 'setTimeout ...、0) 'は、(もちろん、setTimeoutの内部動作について何かを知っていない限り)非常に明確に感じる気がしません。 –

+0

だから、callLaterは私が探しているものではありません...しかし、それは私が得られる最高のかもしれません。 –

+0

setTimeoutを嫌ってはいけません。それはJavaScriptの初期のころからありました。しかし、任意の遅延のためにそれを必要とする場合、おそらくあなたのデザインに何か問題があります。私はcallLaterが "待っている"ことのすべてを信頼できると決して見つけたことはありません。少なくともsetTimoutでは、ハックであってもどれくらい待っているのか分かります。 – Glenn

0

as3イベントのキャプチャフェーズとバブリングフェーズを見てみましょう。 私は、プロセスを明確に説明するこの素敵な章を見つけました:http://books.google.com/books?id=yFNZGjqJe9IC&lpg=PA250&ots=oPB9HXIby7&dq=flash%20event%20bubbling%20phase&pg=PA250#v=onepage&q=&f=false

また、このさまざまなフェーズの使用方法を説明するEventDispatcherクラスのドキュメントをチェックしてください。

+0

ごめんなさい...これがどう関係しているのかよくわかりません。 –

関連する問題