2012-01-14 3 views

答えて

1

はい、これは問題ありません。 go関数はイベントリスナーの一部ではありません。

function go(e:Event):void { 
// do something 
} 

上記のサンプルでは、​​リスナー(e:イベント)のイベントパラメータが必要です。

しかし、パラメータはオプションであるように、あなたは

function go(e:Event = null):void { 
// do something 
} 

をしたい任意の時間は、上記の例は、リスナーによっても

を入力してトリガされます行くの関数を呼び出すことができますので、あなたは、機能を変更することができます

go();

+0

@ crooksy88、私はイベントハンドラとして、そしてどこか他の場所から呼び出すことのできる関数として、eパラメータをオプションにすることによって関数を使用する可能性についてあなたが言うことに同意しますが、 "go関数はイベントリスナーの一部ではありません" addEventListener(Event.Complete、go)は、「リスナーをイベントEvent.Completeに追加する」と読み替えることができますが、「go関数isn」ではなく、リスナーに移動するというより正確ではないでしょうか?イベントリスナーの一部ですか? –

+0

「イベントCOMPLETEのリスナーを追加し、それが起こったgo()を呼び出す」と言う方がおそらくより正確でしょう。あなたが保存しているのは、関数自体ではなく、関数のコールバックです。 – divillysausages

+0

私は '人間が読める言葉で'言うつもりです... COMPLETEイベントのリスナーを作成し、それを追加したいものに追加します。 COMPLETEイベントが発生したら、go関数を呼び出します。私が見るとおり、リスナーは、go関数とは完全に別のオブジェクトです。唯一の接続は、一方が他方を呼び出すという事実です。 – crooksy88

3

技術的には問題ありません。 crooksy88はイベントパラメータのデフォルト値を提供して関数をより汎用的にする良い例です。

しかし、セマンティクス、明快さ、および保守のために、私は通常、物事をもっと分離することを好みます。だから、私のはもっとこのように設定される可能性があります:それは、それははるかに簡単だけで関数名を読み込むことで、アプリの流れと各パーツはありませんを理解することができ

protected function onLoadComplete(e:Event):void { 
    initAppSettings(); 
    createUI(); 
    startApp(); 
} 

。私がこれに戻ってくると、私のUIはcreateUIという名前の関数で作成され、gohandleEventのような暗黙の名前を持つイベントハンドラで作成されることはわかりません。

また、UIが作成される前に読み込みが完了したら、アプリケーションのフローを変更したい場合は、大きなチャンクを移動するのではなく、いくつかの関数呼び出しを移動するだけですコードの

関連する問題