-1

私はここで少し途方に暮れています。マウスイベントが優先されることが原因であると思われる問題があります。fマウスのクリックで呼び出される関数があります-fいくつかの作業を行ってから、別の関数を呼び出しますgf実行してから別のクリックが発生し、再度呼び出しf実行される可能性はありますか? g

私の言い回しがわかりにくい場合は、何が起こっていると思われるかを示してみます。

    click1 -----       /-----------\
                \     /             \
                  f --      f--      g    g
                           /   \         /
      click2 ------------ /     \--------

 |---------------- timeline----------------------|

確かに、問題が発生するのは(〜50回の遅いダブルクリックと〜50回のクイックダブルクリックのうち)、非常にすばやく連続して2回クリックした場合のみです(常にそうであるとは限りません)。私の図は、明確にするよりも混乱を招く可能性があることを理解していますが、私の考えを伝える方法が他にわかりません. どんな入力でも大歓迎です!

4

1 に答える 1

2

AS3 は、関連するすべてのコードをそのまま実行するシングル スレッド コード実行環境です。クリックによって一連のメソッドの実行がトリガーされた場合、他のコードが再度実行される前に、これらすべてのメソッドが実行されます。結果として、AS3 コードのコード実行で競合状態が発生することはありません。これは、シングル スレッドの性質によるものです。

その点で、AS3 のすべてのイベントは特別なケースではありません。リスナーがすべてのコードを同じように実行し、それが完了するまで他のコードを実行することはできません。

特殊なケースは次のとおりです。

  • タイマーなどを使用して実行を一時停止できるため、コードの実行は後で行われます。その場合、これらのタイマーのトリガーが開始順序と同期するという保証はありません。

  • 非同期コマンドを実行する (何かをロードするなど)。その場合、ロード操作が順番に行われるという保証はありません。

ただし、これらの特殊なケースは、AS3 のコード実行の原則に違反していません。すべてのコードは 1 つのスレッドで実行されるため、いかなる種類のコードも重複することはありません。

于 2016-01-15T14:36:17.233 に答える