AS3笔记(13),sendAndLoad的继承者_Flash As

在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 {
    import flash.events.*;
    import flash.net.*;
    import flash.display.Sprite;

    public class sendAndLoadEX extends Sprite {
        private var xmlData:XML;
        private var uReq:URLRequest;
        private var uLoader:URLLoader=new URLLoader();
        private var uVar:URLVariables=new URLVariables();
        public function sendAndLoadEX() {
            startLoad();
        }
        /*
        加载url
        */
        private function startLoad():void {
            //定义参数
            uVar.param="You are now visting www.2solo.cn";//返回的参数
            uVar.vtype="xml";//返回类型
            //uVar.vtype = "var";

            uReq=new URLRequest("your url");
            //方法类型
            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);
        }
        /*
        加载成功
        */
        private function completeHandler(evt:Event):void {
            trace("成功");
            //trace(evt.currentTarget.data.vars);
            xmlData=new XML(evt.currentTarget.data);
            parseXml();
        }
        /*
        加载失败
        */
        private function ioErrorHandler(evt:IOErrorEvent):void {
            trace("失败");
        }
        /*
        解析xml
        */
        private function parseXml() {
            trace(xmlData.child("param")[0]);
        }
    }

运行上例的输出结果为:"You are now visting www.2solo.cn".我在该例子中模拟的是XML.sendAndLoad方法,服务端我使用asp做测试,代码如下:
test.asp
<%
Response.CodePage=65001
Response.Charset="UTF-8"

if request("vtype")="xml" THEN
response.write "<?xml version=""1.0"" encoding=""utf-8""?><data>"
response.write "<param>"&request("param")&"</param>"
response.write "</data>"
ELSEIF request("vtype")="var" THEN
response.write "vars="&request("param")
END IF
%> 

在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

时间: 2025-01-18 15:29:01

AS3笔记(13),sendAndLoad的继承者_Flash As的相关文章

操作系统概念学习笔记 13 死锁(一)

操作系统概念学习笔记 13 死锁(一) 所有申请的资源都被其他等待进程占有,那么该等待进程有可能在无法改变其状态,这种情况称为死锁(deadlock). 系统模型 进程在使用资源之前必须先申请资源,在使用资源之后要释放资源.进程所申请的资源数量不能超过系统所有资源的总量. 在正常操作模式下,进程只能按如下顺序使用资源: ①申请:如果申请不能立即被允许,那么申请进程必须等待,直到它获得该资源为止. ②使用:进程对资源进行操作. ③释放:进程释放资源 资源的申请与释放为系统调用.其他资源的申请与释放

愚人呓语的AS3笔记:for each in

笔记 新的 for each - in 除了遍历XML,同样可以用来遍历数组和对象.创建"百万雄兵": var testArr:Array = new Array();for(var i:Number = 0; i < 1000000; i++){    testArr.push(i);} 以前的 for 和 for - in 以及新的 for each - in 循环: //for    260毫秒var len:Number = testArr.length;for(var

spring学习笔记(13)基于Schema配置AOP详解

基于Schema配置入门实例 除了基于@AspectJ注解的形式来实现AOP外,我们还可以在IOC容器中配置.先来看看一个常见的应用场景,在我们的web项目中,我们需要为service层配置事务,传统的做法是在每个业务逻辑方法重复下面配置中: Created with Raphaël 2.1.0程序开始1. 获取DAO层封装好的数据库查询API,如HIbernate中的SessionFactory/Session和mybatis中的xxxMapper2. 开启事务3. 根据入参查询数据库完成相应

API Demos 2.3 学习笔记 (13)-- Views-&amp;gt;Seek Bar

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> SeekBar 是基于ProgressBar的扩展,可以理解为添加了滑动条的ProgressBar.用户可以左右移动滑动条或者左右移动轨迹球来设置当前的进度值.最好不要在SeekBar左边或者右边放置一个可以聚焦的控件. SeekBar 控件最经典的应用是在播放器中用于显示/改变播放进度的进度条.下面是一个简单的SeekBar 控件: <SeekBar android:id="@+id/seek" a

ExtJs学习笔记(13)_Card布局

这个布局其实最为麻烦,主要是用来实现类似"上一步","下一步"类似向导的界面 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/199

Symbian学习笔记(13)

如何在S60第三版中做一个自启动应用. 参考这篇文章:How to autostart an application on boot up in 3rd- Startup List Management API:http://wiki.forum.nokia.com/index.php/How_to_autostart_an_application_on_boot_up_in_3rd-_Startup_List_Management_API 第一步:写一个RSS文件,就用自己的那个UID作为文件

JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性_基础知识

接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的变化(并非全部变化)集中整理一下,但这里只是列举,不具体展开. 一.语法变化 1.关键字和保留字 在ES3中,使用关键字做标识符会导致"Identifier Expected "错误,而使用保留字做标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎.在ES5中,关键字和保留字虽然不能作为标识符 使用,但可以作

Android学习笔记(13):帧布局FrameLayout

帧布局FrameLayout,直接继承自ViewGroup,每个加入的组件在一层,组件按定义的顺序一层一层叠在一起,先定义的在下层. FrameLayout支持的XML属性如下: android:foreground setForeground(Drawable) 设置该帧布局容器的前景图像 android:foregroundGravity setForegroundGravity(int) 定义绘制前景图像的gravity属性  子组件依旧可以用android:layout_gravity控

TIJ阅读笔记(第十三章)

笔记 13: 并发编程 面向对象使我们能将程序划分成相互独立的模块.但是你时常还会碰到,不但要把程序分解开来,而且还要让它的各个部分都能独立运行的问题. 这种能独立运行的子任务就是线程(thread).编程的时候,你可以认为线程都是能独立运行的,有自己CPU的子任务.实际上,是一些底层机制在为你分割CPU的时间,只是你不知道罢了.这种做法能简化多线程的编程. 进程(process)是一种有专属地址空间的"自含式(self-contained)"程序.通过在不同的任务之间定时切换CPU,