AS3笔记(13),sendAndLoad的继承者_Flash教程-查字典教程网
AS3笔记(13),sendAndLoad的继承者
AS3笔记(13),sendAndLoad的继承者
发布时间:2016-12-28 来源:查字典编辑
摘要:在As2中LoadVars和XML都有sendAndLoad方法,该方法可以使用POST方法将参数发送到指定的URL,下载服务器的响应并接受...

在As2中LoadVars和XML都有sendAndLoad方法,该方法可以使用POST方法将参数发送到指定的URL,下载服务器的响应并接受参数.在As3.0之前,是最普及的数据通讯方法之一.在AS3.0以后,XML方法已经参照E4X的规范来定义,早就没有了sendAndLoad方法,而LoadVars类更是消失的无影无踪了。

其实早在AS2中就可以发现,sendAndLoad方法的设计很不合理,在两中数据对象中存在且机制相同.现在好了,AS3.0中很好的封装了这一功能,这就是URLLoader的登场.URLLoader类以文本、二进制数据或URL编码变量的形式从URL下载数据。在下载文本文件、XML或其它用于动态数据驱动应用程序的信息时,它很有用。可见,除了原有的variables和xml的数据加载方法,现在还多出了二进制数据方法,这个暂时不提,先说一下模拟AS2中两个sendAndLoad的方法。完成这些方法,我们还需要下列类的帮助:

URLRequest类

URLVariables类

URLRequest类用以捕获单个HTTP请求中的所有信息,URLVariables类可以在Flash应用程序和服务器之间传输变量.详细的说明请参看帮助.下例为一个sendAndLoad方法范例:

sendAndLoadEX.as

/*@

Author:frank

Site:www.2solo.cn

Date:2008.02.15

Info:sendAndLoad

*/

package{

importflash.events.*;

importflash.net.*;

importflash.display.Sprite;

publicclasssendAndLoadEXextendsSprite{

privatevarxmlData:XML;

privatevaruReq:URLRequest;

privatevaruLoader:URLLoader=newURLLoader();

privatevaruVar:URLVariables=newURLVariables();

publicfunctionsendAndLoadEX(){

startLoad();

}

/*

加载url

*/

privatefunctionstartLoad():void{

//定义参数

uVar.param="Youarenowvistingwww.2solo.cn";//返回的参数

uVar.vtype="xml";//返回类型

//uVar.vtype="var";

uReq=newURLRequest("yoururl");

//方法类型

uReq.method=URLRequestMethod.POST;

uReq.data=uVar;

//定义参数格式

uLoader.dataFormat=URLLoaderDataFormat.TEXT;

//uLoader.dataFormat=URLLoaderDataFormat.VARIABLES;

uLoader.addEventListener(Event.COMPLETE,completeHandler);

uLoader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);

uLoader.load(uReq);

}

/*

加载成功

*/

privatefunctioncompleteHandler(evt:Event):void{

trace("成功");

//trace(evt.currentTarget.data.vars);

xmlData=newXML(evt.currentTarget.data);

parseXml();

}

/*

加载失败

*/

privatefunctionioErrorHandler(evt:IOErrorEvent):void{

trace("失败");

}

/*

解析xml

*/

privatefunctionparseXml(){

trace(xmlData.child("param")[0]);

}

}

}

运行上例的输出结果为:"Youarenowvistingwww.2solo.cn".我在该例子中模拟的是XML.sendAndLoad方法,服务端我使用asp做测试,代码如下:

test.asp

<%

Response.CodePage=65001

Response.Charset="UTF-8"

ifrequest("vtype")="xml"THEN

response.write"<?xmlversion=""1.0""encoding=""utf-8""?><data>"

response.write"<param>"&request("param")&"</param>"

response.write"</data>"

ELSEIFrequest("vtype")="var"THEN

response.write"vars="&request("param")

ENDIF

%>

在sendAndLoadEX.as中,uVar.param和uVar.vtype做为两个参数post给服务器端文件.uVar.param将作为参数返回,uVar.vtype则做为返回XML或Vars的判断.上例中,如要测试Loadvars.sendAndLoad,可以将:

//uVar.vtype="var";

//uLoader.dataFormat=URLLoaderDataFormat.VARIABLES;

//trace(evt.currentTarget.data.vars);

的注释去掉,其中evt.currentTarget.data.vars属性直接来自test.asp的输出值,这点用原来的loadvars装载返回数据的方式一样。URLLoaderDataFormat有三个类型,除了TEXT,VARIABLES,还有BINARY做了二进制编码的格式.最后值得一提的是,AS3允许通过URLRequestHeader对文件头进行操作,这是一个很重要的提升.

最后附上本例源文件:

http://xiazai.jb51.net/flash/sendAndLoadEX_2soloDOTcn.zip

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Flash教程学习
    热门Flash教程学习
    网页设计子分类