2016-06-14 7 views
0

私はflexでプログラムを書いていますが、私はこのポインタに問題があります。AS3、 'this'ポインタの説明

私は関数の中で関数呼び出しをしていますが、私はこのポインタがどのイベントを通過しているのか疑問に思っています。明確にするために

private function funcA(someArgument) 
{ 
    newDialog.show("Title", "Body", funcB, this) // the 'this' is the argument for funcB 
} 

private function funcB(CloseEvent:event) 
{ 
    if(event == Event.CANCEL) 
     doStuff; 
    if(event == Event.COMPLETE) 
     doOtherStuff; 
} 

私はnewDialog内の関数にこのポインタを渡すとき、私の質問は、私は、新しく作成された対話を渡すか、私はてfuncAに渡しアムれます。私は前者を考え、期待している。

私はこれを手動でテストするだけですが、システムは本当に大規模で、現在は他のイベントと連携していますので、オブジェクトをインスタンス化してテストするのは難しいです。

+0

このコードが含まれているscope/classインスタンスを渡しています。 – BadFeelingAboutThis

+2

'CloseEvent:event'は' event:CloseEvent'のように見えます。 –

+0

OPはおそらくC#のような形式です。 –

答えて

0

このポインタをnewDialogの関数に渡すと、新しく作成されたDialogueを渡すか、funcAを渡していますか?

どちらもありません。

private functionがあります。これはclassのメンバーです。そのfunctionを呼び出すには、そのオブジェクトのインスタンスがclassであるオブジェクトを作成してから、そのオブジェクトに対してfuncAを呼び出す必要があります。

は、正確にそのオブジェクトへの参照です。

1

nullが正しい間に、funcBのメソッドシグネチャがイベントリスナーとして追加されるように見えます。 funcBは予定しています。すべてのイベントには、イベントをディスパッチする実際のオブジェクトであるプロパティtargetと、リスンされていたオブジェクトであるcurrentTargetがあります。これらは、表示オブジェクトの子オブジェクトが実際にイベントを送出する表示リストのイベントをバブリングする場合にのみ異なります。

このコードが見つかったクラスがEventのサブクラスではない場合、funcBのエラーはかなり難しいと思います。 funcAの機能がイベントの責任であるべきではないため、それがEventのサブクラスである場合は、そうであってはなりません。