package cagWeb.service.properties.util
{
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.events.TimerEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.utils.Timer;
/**
* 带超时处理的urlLoader
* @author
*/
public class URLLoader extends flash.net.URLLoader
{
private var _timeoutTimer:Timer;
public var timeout:Number; // default timeout value
public static const TIMEOUT:String = 'loaderTimeout';
[Event(name="loaderTimeout", type="flash.events.Event")]
public function URLLoader(timeout:Number = 1000, request:URLRequest=null):void
{
super(request);
this.timeout = timeout;
_timeoutTimer = new Timer(timeout);
}
override public function load(request:URLRequest):void
{
_timeoutTimer.addEventListener(TimerEvent.TIMER, handleTimeout);
_timeoutTimer.delay = timeout;
addEventListener(IOErrorEvent.IO_ERROR, handleLoadActivity);
addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleLoadActivity);
addEventListener(Event.COMPLETE, handleLoadActivity);
addEventListener(ProgressEvent.PROGRESS, handleLoadActivity);
addEventListener(Event.OPEN, handleLoadActivity);
super.load(request);
_timeoutTimer.start();
}
override public function close():void
{
killTimer();
super.close();
}
private function handleLoadActivity(event:Event):void
{
killTimer();
}
private function killTimer(event:Event = null):void
{
removeEventListener(IOErrorEvent.IO_ERROR, handleLoadActivity);
removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handleLoadActivity);
removeEventListener(Event.COMPLETE, handleLoadActivity);
removeEventListener(ProgressEvent.PROGRESS, handleLoadActivity);
removeEventListener(Event.OPEN, handleLoadActivity);
_timeoutTimer.reset();
_timeoutTimer.removeEventListener(TimerEvent.TIMER, handleTimeout);
if(event)
super.dispatchEvent(event.clone());
}
private function handleTimeout(event:TimerEvent):void
{
killTimer();
super.dispatchEvent(new Event(TIMEOUT, true));
// this.dispatchEvent(new Event(TIMEOUT, true));
// var dis:EventDispatcher = new EventDispatcher(this);
// dis.dispatchEvent(new Event(TIMEOUT, true));
}
}
}
具备请求url的超时功能。
var urlload:UrlLoader = new UrlLoader();
urlLoad.timerout=2000;
urlLoad.addEventListener(URLLoader.TIMEOUT,timerOutHandler);
分享到:
相关推荐
在ActionScript 3 (AS3)中,`URLLoader` 类是用于加载各种类型数据的强大工具,包括XML。XML(eXtensible Markup Language)是一种轻量级的标记语言,常用于存储和交换数据。本篇文章将深入探讨如何使用`URLLoader`...
在Flex开发中,`URLLoader` 是一个非常重要的类,用于加载远程数据,如XML、JSON等。在本示例中,它被用来从服务器获取XML文件并将其内容解析为XML对象,以便在应用程序中使用。`Flex` 是Adobe开发的一个开放源代码...
在Adobe Flash Professional CS5或更新版本的环境中,ActionScript 3(AS3)提供了一套强大的网络通信工具,包括`URLRequest`、`URLLoader`等类,这些类替代了早期版本中的`LoadVars`方法,使得与服务器的交互更加...
2. **错误处理**:UrlLoader可能包含对网络异常的处理,比如超时、连接失败、无效的URL等,以提供友好的错误反馈。 3. **数据解析**:加载的网页内容通常是HTML格式,UrlLoader可能会包含解析HTML的逻辑,如提取...
1. **URLLoader 类**:`URLLoader`是ActionScript 3.0中的一个类,用于异步加载文本数据,如文本文件(txt、csv)、XML文件、JSON数据等。它继承自`EventDispatcher`,可以监听加载过程中的各种事件,如加载完成(`...
在ActionScript 3 (AS3)中,与服务器进行数据交互是Web开发中的核心部分,主要依赖于两个关键类:`URLRequest`和`URLLoader`。这两个类是Flash Player和Adobe AIR应用程序用来发送HTTP请求并接收响应的重要工具。...
本文将深入探讨Flex与后台交互的三种主要方法:HTTPService、WebService和URLLoader,并重点关注基于WebService的交互方式。 一、HTTPService HTTPService是Flex中用于与HTTP服务器进行数据交换的主要组件。它基于...
var urlLoader:URLLoader = new URLLoader(); ``` #### 3.2 设置数据加载监听器 ```actionscript urlLoader.addEventListener(Event.COMPLETE, onResourceLoadComplete); ``` 这里注册了一个事件监听器,当资源...
- URLLoader 类是ActionScript中用于从URL下载数据的工具,支持以文本、二进制数据或URL编码变量三种形式加载数据。 - 当加载文本文件、XML或其他动态数据时非常有用。它在下载完所有数据后才将内容传递给...
在本话题中,重点讨论的是使用`URLLoader`类来实现这一目标。 `URLLoader`是Flex SDK中的一个关键组件,它允许我们加载和发送HTTP请求。在与Java后台交互时,我们通常会用到GET或POST方法来获取或提交数据。`...
网址加载器 Yii2 的多线程下载器链接。 安装 安装此扩展的首选方式是通过 composer。 将"paulzi/yii2-urlloader": "*"到 require 部分并 ... 'class' => 'paulzi\urlloader\UrlLoader' , // 'on success'
本文讨论的是如何通过ActionScript(AS)中的URLLoader类来解决JavaScript(JS)中的跨域问题,特别是当数据接口只提供XML格式数据时的场景。ActionScript是Adobe Flash平台使用的编程语言,而URLLoader类则是...
在Flex编程中,指定文件下载并带有进度条功能是一项常见的需求,这主要涉及到网络I/O操作、事件处理以及用户界面的更新。以下是对这个主题的详细讲解。 首先,Flex是Adobe开发的一种开源富互联网应用程序(RIA)...
在ActionScript 3.0中,加载外部文本数据是常见的需求,这可以通过使用URLLoader类来实现。URLLoader是Flash Player和Adobe AIR中用于加载网络资源的核心组件。 加载文本格式数据的作用在于能够使应用程序获取并...
var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, xmlLoaded); ``` 2. **创建URLRequest对象**:此对象封装了要加载的URL。我们需要指定XML文件的位置。 ```actionscript ...
var urlLoader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("原始URL"); urlLoader.load(request); ``` 2. **修改URL**: 要修改URL,你需要创建一个新的URLRequest对象,并设置新...
它可以处理不同类型的响应数据,如文本、二进制数据等,并且比 HTTPService 更灵活,因为它支持自定义 HTTP 头部和设置超时时间等功能。 #### 2. 使用示例解析 文档中还给出了一个 URLLoader 的使用示例: ##### ...
在AS2中,通过XMLSocket类或者URLLoader类可以实现客户端与服务器的数据通信。下面将详细介绍这个主题。 1. **ActionScript 2.0基础**: ActionScript 2.0是Adobe Flash Player支持的一种编程语言,主要用于创建...