2011-08-01 25 views
1

私はクラス内の外部関数を呼び出したい。それはコードです。 checkConnectionStatus関数でクラスの内部から外部関数を呼び出す方法は?

この[_funcNameForSucceededCon] .apply()。 "this"はクラスであり、アプリケーションではないため動作しません。現時点でどのようにアプリケーションにアクセスすることができますか、何ができますか?

ご協力いただければ幸いです。

お待ちしております、 ミラ。

package myLibrary 
{ 
    import air.net.URLMonitor; 

    import flash.events.Event; 
    import flash.events.StatusEvent; 
    import flash.net.URLRequest; 

    public class connectionControl 
    { 
     private var _urlReq:URLRequest; 
     private var _urlMonitor:URLMonitor; 

     private var _funcNameForSucceededCon:String; 
     private var _funcNameForFailedCon:String; 

     public function connectionControl(targetURL:String, funcNameForSucceededCon:String, funcNameForFailedCon:String) 
     { 
      _urlReq = new URLRequest(targetURL); 
      _urlMonitor = new URLMoniotor(_urlReq); 

      _urlMonitor.addEventListener(StatusEvent.STATUS, checkConnectionStatus); 

      _funcNameForSucceededCon = funcNameForSucceededCon; 
      _funcNameForFailedCon = funcNameForFailedCon; 

      if(_urlMonitor.running == false) 
      { 
       _urlMonitor.start(); 
      } 
      else 
      { 
       _urlMonitor.stop(); 
       _urlMonitor.start(); 
      } 
     } 

     private function checkConnectionStatus(e:Event):void 
     { 
      _urlMonitor.removeEventListener(StatusEvent.STATUS, checkConnectionStatus); 

      if(_urlMonitor.available) 
      { 
       this[_funcNameForSucceededCon].apply(); 
      } 
      else 
      { 
       this[_funcNameForFailedCon].apply(); 
      } 

     } 

    } 
} 

答えて

2

コールバックとして機能するように関数の名前を渡しました。代わりに関数自体を使用し、connectionControlに渡します。

public class connectionControl 
{ 

    private var _funcSucceededCon:Function; 
    private var _funcFailedCon:Function; 

    public function connectionControl(targetURL:String, funcSucceededCon:Function, funcFailedCon:Function) 
    { 
     _urlReq = new URLRequest(targetURL); 
     _urlMonitor = new URLMoniotor(_urlReq); 

     _urlMonitor.addEventListener(StatusEvent.STATUS, checkConnectionStatus); 

     _funcSucceededCon= funcSucceededCon; 
     _funcFailedCon= funcFailedCon; 

     ... 

そして:

 if(_urlMonitor.available) 
     { 
      _funcSucceededCon(); 
     } 
+0

ありがとうございました。 – mira

+0

投票数の下のグレーのチェックボックスをクリックして、この回答を受け入れられた回答にマークすることを検討してください。 –

+0

この方法で面白い結果を得ることができます。このクラスでイベントをディスパッチした後、そのクラスにディスパッチされたイベントのリスナーを追加する方がよいでしょう。 –

関連する問題