2011-12-15 4 views
2
対ターゲットの違い

可能性の重複:
Difference between e.target and e.currentTargetAS3:は、currentTarget

私は実際にこれらの2

event.target and    

event.CurrentTarget and explanation. 

の違いを理解していない誰かがこのことを説明することができます簡単な例で私に?

+0

です。こんにちはswati私は私の答えを更新しました。その答えを参照してください。 –

答えて

3

TextInputオブジェクトを作成するとします。 TextInputに

import fl.controls.TextInput; 
import flash.events.MouseEvent; 

var t:TextInput; 

function init():void { 
    t = new TextInput(); 
    t.x = 100; 
    t.y = 100; 
    t.width=100; 
    t.height=30; 
    t.addEventListener(MouseEvent.CLICK, fresult); 
    this.addChild(t); 
} 

function fresult(e:Event):void { 
    trace(e.target); 
    trace(e.currentTarget); 
} 

init(); 

クリックするのトレースを与える:

[オブジェクトのテキストフィールド]
[オブジェクトのTextInput]

これが意味:

event.targetからオブジェクトでありますイベントが起きたつまり、この場合、TextFieldがクリックされたので、イベントはTextFieldに由来します。

event.currentTargetは、リスナーを呼び出したオブジェクトです。この場合、TextInputはリスナーと呼ばれるので、currentTargetTextInput

+1

なぜevent.targetトレース "[オブジェクトTextField]"、イベントは何を意味するのですか? –

+1

'TextField'は、テキストを書き込む実際のコンポーネントです。 TextInputは、textFieldを含み、特定のメソッドを追加するコンポーネントです。したがって、クリックすると実際にtextFIELDをクリックしています。これが目標です。しかし、舞台裏で何が起こるのかわからないとしたら、TextFieldがclickイベントをキャッチするコンポーネントであることはわかりません。 TextINPUTコンポーネントにイベントリスナーを追加します。したがって、リスナーを追加するコンポーネントはcurrentTargetにあります。これで十分ですか? –

+0

okk、おかげで... ...)!!!!! –

3

リンクは次のとおりです。

Click

あなたは、リンク理論的に

Click

次の訪問により、UIに

その反対の実際の種類をその違いを見ることができます。

currentTargetは、リスナーを設定するものです。ターゲットはイベントを引き起こします(dispatchEventを呼び出すもの)。 currentTargetとtargetの両方が、バブリングのないイベントでも同じになります。バブリングイベントの場合、addEventListenerが子によって送出されたイベントの親に対して呼び出されたときに異なります。次に、currentTargetは親になり、ターゲットは子(イベントを実際に送出した子)になります。

現在、イベントハンドラで指定する内容は、リスナーを追加したオブジェクトであるためです。実際にイベントが発生したオブジェクトのソースの子を知る必要がある場合にのみ、ターゲットを参照する必要があります。

+0

私は、ターゲットと現在のターゲットのas3の簡単な例が必要です。助けてください –

+0

優秀な答え...明確なカット.. – user533