3

Actionscript 3では、ほとんどのイベントでキャプチャ/ターゲット/バブルモデルが使用されます。これは、最近非常に人気があります。

イベントが発生すると、イベントフローの3つのフェーズを通過します。キャプチャフェーズは、ディスプレイリスト階層の最上位からターゲットノードの直前のノードに流れます。ターゲットノードを構成するターゲットフェーズ。そして、ターゲットノードに続くノードから流れるバブリングフェーズは、ディスプレイリスト階層をバックアップします。

ただし、Spriteクラスのイベントなど、一部のイベントenterFrameはキャプチャまたはバブルしません。イベントを検出するには、ターゲットに直接サブスクライブする必要があります。ドキュメントでは、これらを「ブロードキャストイベント」と呼んでいます。これらのイベントはステージ上のスプライトごとに常にトリガーされ、余分なイベントの伝播をすべて処理する必要がないため、これはパフォーマンス上の理由によるものと思います。

自分の放送イベントを発信したい。イベントがバブリングするのを防ぐことができることは知っていますが(Event.bubbles = false)、キャプチャも取り除くことができますか?

4

3 に答える 3

1

back2dosからの答えは間違っています。実際Event.bubblesには、プロパティはキャプチャフェーズに影響しません。

public class CaptureTextInput extends Sprite
{
  function CaptureTextInput()
  {
    var t:TextField = new TextField();
    t.type = TextFieldType.INPUT;
    addEventListener(TextEvent.TEXT_INPUT, function(event:TextEvent):Void
    {
      trace("captured"); // This event will be triggered properly when you type in text field.
    }, true);
    addChild(t);
  }
}
于 2011-12-30T19:31:45.453 に答える
0

バブルフェーズとキャプチャフェーズは、どちらもバブリングメカニズム全体の一部です。bubblesに設定されている場合false、両方とも存在しません。

于 2010-03-15T09:47:05.590 に答える
0

バブルフェーズとキャプチャフェーズを取り除けば、それはブロードキャストイベントにはなりません。ブロードキャストイベントの特別な点は、ディスパッチされると、ディスプレイリストのオン/オフに関係なく、すべてのリスナーがトリガーされることです。自分の放送イベントを発信する方法があるとしたら、それが何なのかわかりません。

于 2015-04-10T19:37:43.127 に答える