2011-08-01 151 views
1

我想调用一个类中的外部函数。这就是代码;如何从类内部调用外部函数?

在checkConnectionStatus功能

此[_funcNameForSucceededCon]。适用();不工作,因为“这个”是类,而不是应用程序。我目前如何到达应用程序,或者我能做什么?

任何帮助将不胜感激。

最好的问候, 米拉。

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

您可以使用此方法从范围确定中获得有趣的结果。最好让这个类派发一个事件,然后为派发的事件添加一个监听器给这个类。 –