2012-11-26 32 views
5

मैं इस कोड का उपयोग कर रहा मेरे फ़्लैश फ़ाइल मेंActionscript 3 - एक इंटरनेट कनेक्शन

import air.net.URLMonitor; 
import flash.net.URLRequest; 
import flash.events.StatusEvent; 

var monitor:URLMonitor; 

function checkInternetConnection(e:Event = null):void 
{ 
var url:URLRequest = new URLRequest("http://www.google.com"); 
url.method = "HEAD"; 
monitor = new URLMonitor(url); 
monitor.pollInterval = 1000; 
// 
monitor.addEventListener(StatusEvent.STATUS, checkHTTP); 
// 
function checkHTTP(e:Event = null):void 
{ 
if (monitor.available) { 

     navigateToURL(new URLRequest("flickr.html"),"_top"); 

    } else { 

     gotoAndPlay(1); 

    } 
} 
monitor.start(); 
} 

मैं एक कनेक्शन के लिए जाँच करें और अन्य पृष्ठ पर नेविगेट नहीं तो यह पुनः चलाने जाएगा फ़्लैश पाने के लिए कोशिश कर रहा हूँ के लिए जाँच।

ऐसा लगता है कि यह काम नहीं कर रहा है। क्या मुझे कुछ याद आ रही है?

मैंने एयरकोर.swc पर लाइब्रेरी पथ भी जोड़ा है। इसलिए आकाशवाणी खिलाड़ी के बाहर काम नहीं करेगा -

यह एक एचटीएमएल बजाय एक आकाशवाणी एप्लिकेशन फ्लैश के साथ पेज

चीयर्स

उत्तर

0

air.net.URLMonitor आकाशवाणी उपलब्ध वर्ग है होना।

लेकिन आप स्वयं को करने की कोशिश कर सकते हैं क्योंकि यह मॉनिटर क्लास यूआरएल "पिंग" करता है और प्रतिक्रिया की जांच करता है, इसलिए आप google.com जैसे ज्ञात स्रोत से कुछ लोड करने की कोशिश कर सकते हैं और यदि यह पूरा हो जाता है त्रुटि तो यह ठीक है अन्यथा आपको त्रुटि मिल जाएगी।

+0

क्षमा करें, क्या आप इस लिंक की जांच कर रहे हैं कृपया http://stackoverflow.com/questions/39849033/flash-cs6-as3-check-internet-connection-not-working-at-all/39860240?noredirect=1# टिप्पणी 67291875_39860240 –

6

मुझे आपके कोड में दो समस्याएं दिखाई देती हैं। एक यह है कि जब आपके पास check internet connection पर तर्क है, तो फ़ंक्शन को कॉल करने वाला कोई कोड नहीं है, इसलिए पुनर्निर्देशन का तर्क नहीं कहा जाएगा। दूसरा यह है कि AIRcore.swc का उपयोग करना एक बुरा विचार होगा क्योंकि आपने एक निर्भरता इंजेक्शन दी है जो ब्राउज़र सैंडबॉक्स के साथ काम नहीं कर सकती है या उल्लंघन नहीं कर सकती है।

आप निम्न दृष्टिकोण है जो परीक्षण किया है और आवश्यकता है कोई आकाशवाणी के SWC कोशिश कर सकते हैं:

package 
{ 
    import flash.events.*; 
    import flash.net.*; 

    [Event(name="error", type="flash.events.Event")] 
    [Event(name="success", type="flash.events.Event")] 
    public class ConnectionChecker extends EventDispatcher 
    { 
     public static const EVENT_SUCCESS:String = "success"; 
     public static const EVENT_ERROR:String = "error"; 

     // Though google.com might be an idea, it is generally a better practice 
     // to use a url with known content, such as http://foo.com/bar/mytext.txt 
     // By doing so, known content can also be verified. 

     // This would make the checking more reliable as the wireless hotspot sign-in 
     // page would negatively intefere the result. 
     private var _urlToCheck:String = "http://www.google.com"; 


     // empty string so it would always be postive 
     private var _contentToCheck:String = "";  

     public function ConnectionChecker() 
     { 
      super(); 
     } 

     public function check():void 
     { 
      var urlRequest:URLRequest = new URLRequest(_urlToCheck); 
      var loader:URLLoader = new URLLoader(); 
      loader.dataFormat = URLLoaderDataFormat.TEXT; 

      loader.addEventListener(Event.COMPLETE, loader_complete); 
      loader.addEventListener(IOErrorEvent.IO_ERROR, loader_error); 

      try 
      { 
       loader.load(urlRequest); 
      } 
      catch (e:Error) 
      { 
       dispatchErrorEvent(); 
      } 
     } 

     private function loader_complete(event:Event):void 
     { 
      var loader:URLLoader = URLLoader(event.target); 
      var textReceived:String = loader.data as String; 

      if (textReceived) 
      { 
       if (textReceived.indexOf(_contentToCheck)) 
       { 
        dispatchSuccessEvent(); 
       } 
       else 
       { 
        dispatchErrorEvent(); 
       } 
      } 
      else 
      { 
       dispatchErrorEvent(); 
      } 
     } 

     private function loader_error(event:IOErrorEvent):void 
     { 
      dispatchErrorEvent(); 
     } 


     private function dispatchSuccessEvent():void 
     { 
      dispatchEvent(new Event(EVENT_SUCCESS)); 
     } 

     private function dispatchErrorEvent():void 
     { 
      dispatchEvent(new Event(EVENT_ERROR)); 
     } 
    } 
} 

चरण 2, अपने मुख्य आवेदन में या कहीं भी:

चरण 1, इस प्रकार एक नया वर्ग ConnectionChecker शामिल कि इंटरनेट कनेक्शन जाँच की जानी चाहिए, निम्नलिखित स्निपेट का उपयोग करें:

var checker:ConnectionChecker = new ConnectionChecker(); 
checker.addEventListener(ConnectionChecker.EVENT_SUCCESS, checker_success); 
checker.addEventListener(ConnectionChecker.EVENT_ERROR, checker_error); 
checker.check(); 

private function checker_success(event:Event):void 
{ 
    // There is internet connection 
} 

private function checker_error(event:Event):void 
{ 
    // There is no internet connection 
} 
+0

हैलो, क्या आप इस लिंक को देखकर दिमाग में हैं: http://stackoverflow.com/questions/39849033/flash-cs6-as3-check-internet-connection-not-working-at-all –

+0

मैंने समायोजन के साथ आपके कोड को आजमाया उपरोक्त उत्तर में उल्लिखित, यह केवल एंड्रॉइड डिवाइस पर काम करता है, क्या मुझे आईओएस पर काम करने के लिए कुछ भी करना चाहिए? –

7

(मेरे प्रतिष्ठा टी पर टिप्पणी करने से बहुत कम है

  • जोड़ा गया:

    urlRequest.useCache = false; 
    urlRequest.cacheResponse = false; 
    

    यह इसके अलावा ianzhen लिन के जवाब सीधे ...)

    मैं अपेक्षा के अनुरूप काम करने के लिए Tianzhen लिन का जवाब पाने के लिए कुछ परिवर्तन करने की जरूरत इसकी आवश्यकता थी क्योंकि जब कनेक्शन निश्चित रूप से खो गया था, तब भी जांच सफल रही क्योंकि कैश को पढ़ा जा रहा था।

  • परिवर्तित:

    if(textReceived.indexOf(_contentToCheck)) 
    

    रहे हैं:

    if(!(textReceived.indexOf(_contentToCheck) == -1)) 
    

    यह परिवर्तन क्योंकि आवश्यक था, जबकि "" (कोई रिक्त स्ट्रिंग) हमेशा पाया जा रहा था, यह सूचकांक '0' पर पाया जा रहा था जो मूल() स्थिति हमेशा विफल होने के कारण मूल कारण बन रहा था।

  • जोड़ा गया:

    urlRequest.idleTimeout = 10*1000; 
    

    मामले में जहां नेटवर्क केबल रूटर से शारीरिक रूप से डिस्कनेक्ट किया गया था में, अनुरोध टाइम-आउट करने के लिए एक बहुत लंबे समय ले सकता है (ईमानदारी से, मैं एक के बाद इंतजार कर के थक गया मिल गया । मिनट की जोड़ी)

ऊपर परिवर्तन करने के बाद, मैंने पाया Tianzhen के कोड पूरी तरह से काम किया: कोई फर्क नहीं पड़ता कि मैं कितना डिस्कनेक्ट करने/पुन: कनेक्ट दोनों iOS और Android डिवाइस पर वाई-फाई() कनेक्शन की स्थिति में परिवर्तन के बारे में चला गया हमेशा पता चला था।

+0

हाय, आपका कोड केवल एंड्रॉइड उपकरणों के लिए काम करता है, मैंने इसे दोनों पर परीक्षण किया है, अगर मैं आईओएस के लिए एंड्रॉइड डिवाइस पर हूं तो मुझे नतीजा मिल सकता है, यह लगातार इंटरनेट कनेक्शन, कोई विचार नहीं कह रहा है? –