Как вызвать внешнюю функцию из класса? - PullRequest
1 голос
/ 01 августа 2011

Я хочу вызвать внешнюю функцию внутри класса.вот код;

в функции checkConnectionStatus,

this [_funcNameForSucceededCon] .apply ();не работает, потому что «это» - это класс, а не приложение.Как я могу связаться с Application в это время или что я могу сделать?

любая помощь будет принята с благодарностью.

С наилучшими пожеланиями, Мира.

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();
             }

         }

     }
}

1 Ответ

2 голосов
/ 01 августа 2011

Вы передали имя функции, которая будет использоваться в качестве обратного вызова.Вместо этого используйте саму функцию и передайте ее в 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();
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...