Bru*_*uce 2 air actionscript-3
我想用Adobe Air检查iPad上的网络状态,此时我正在通过向Google.com发送URLREQUEST进行检查.是否还有其他更好的方法来监控网络状态,并知道是否已断开连接或连接.谢谢你的任何建议.
这里棘手的部分我们没有ping一些间隔时间.所以我们用
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetwork_ChangeHandler);
Run Code Online (Sandbox Code Playgroud)
它会在改变净状态变化时触发,因此性能也很好.
因为Ping是非常昂贵的操作.所以在网络改变后调用start()URLMontior然后我们调用stop().
package com.abc.net
{
import air.net.URLMonitor;
import flash.desktop.NativeApplication;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import flash.events.StatusEvent;
import flash.net.URLRequest;
[Event(name="networkStatusChanged", type="flash.events.Event")]
public class NetStatusMonitor extends EventDispatcher
{
private var urlMonitor:URLMonitor;
private var url:String;
public function KBNetStatusMonitor(url:String = 'http://www.adobe.com')
{
super();
this.url = url;
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetwork_ChangeHandler);
}
protected function onNetwork_ChangeHandler(event:Event):void
{
start();
}
public function start():void
{
urlMonitor = new URLMonitor(new URLRequest(url));
urlMonitor.addEventListener(StatusEvent.STATUS, onNetStatus_ChangeHandler);
if(!urlMonitor.running)
urlMonitor.start();
}
public function stop():void
{
if(urlMonitor.running)
urlMonitor.stop();
}
private function onNetStatus_ChangeHandler(event:StatusEvent):void
{
trace("event code " + event.code);
trace("event level " + event.level);
dispatchEvent(new NetStatusEvent(NetStatusEvent.NETWORK_STATUS_CHANGED,urlMonitor.available));
stop();
}
}
}
Run Code Online (Sandbox Code Playgroud)
活动类
package com.abc.net
{
import flash.events.Event;
public class NetStatusEvent extends Event
{
public static const NETWORK_STATUS_CHANGED:String = "networkStatusChanged";
public var status:Boolean;
public function NetStatusEvent(type:String, status:Boolean, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.status = status;
}
override public function clone():Event
{
return new NetStatusEvent(type, status, bubbles,cancelable);
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
var netStatusMonitor:NetStatusMonitor = new NetStatusMonitor();
netStatusMonitor.addEventListener(NetStatusEvent.NETWORK_STATUS_CHANGED,function(event:NetStatusEvent):void {
statusCallBack.call(null,event.status);
});
netStatusMonitor.start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2287 次 |
| 最近记录: |