使用URLLoader类和URLVariables类实现AS3与服务器通信

我以前写过一篇文章:LoadVars实现Flash与服务器通信。该实例适用于AS2,在AS3中,LoadVars类功能已经替换为 URLLoader、 URLRequest、URLStream 和 URLVariables 类。本文将以一个实例着重讲述怎样使用URLVariables 类和URLLoader类将变量发送到服务器端脚本并处理服务器的响应。

在本例中我们创建了一个名为variables的URLVariables对象,该对象动态创建名为userName和msg的属性,并用表单的输入文本值为其其赋值。接 下来,我们创建了一个URLRequest 对象,该对象指定变量要发送到的服务器端脚本的URL。然后,设置URLRequest对象的method属性,以便将变量作为HTTP POST请求发送。为了清除服务器脚本生成的缓存数据文件,我们添加了文件头。再下一步我们将URLRequest 对象的 data 属性设置为早先创建的variables对象,这样URLVariables对象就添加到URL 请求了。最后,我们创建 URLLoader实例并调用URLLoader.load() 方法,此方法用于启动该请求。

至于处理服务器的响应,我们是用URLLoader 类的complete事件来处理的。与早期版本ActionScript中的XML和LoadVars类非常相似,URLLoader URL 的数据在下载完成之前不可用。

最后值得一提的是,AS3允许通过URLRequestHeader对文件头进行操作,这是一个很重要的提升。

注意:本例所需的后台脚本与使用LoadVars实现Flash与服务器通信那篇文章中用到的一样:脚本的每个名称-值对都创建为URLVariables对象中的 一个属性。唯一不一样的是:第一个名称-值不能加&,否则会报错:Error #2101: 传递给URLVariables.decode() 的字符串必须是包含名称/值对的URL 编码的查询字符串。

点击此处查看最终效果,点击此处下载源文件。

资源:

1.URLVariables:
http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLa ngRefV3/flash/net/URLVariables.html

2.URLLoader:
http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangR efV3/flash/net/URLLoader.html

《使用URLLoader类和URLVariables类实现AS3与服务器通信》有3个想法

  1. 能否請教一下
    為什麼這樣運作後,執行到php可以看到$memberId的資料,但是執行FLASH發佈的HTML檔案時,FLASH文字欄位的都沒有呈現資訊,謝謝您。

    as3 code:
    package
    {
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event; //1046: 找不到 Type,或它不是編譯時期常數:Event。
    import flash.display.MovieClip;

    public class ecardmain extends MovieClip{

    public function ecardmain()
    {
    // constructor code
    var loader:URLLoader = new URLLoader();
    //loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.load(new URLRequest(‘http://localhost/hfyang/pictest.php’));
    loader.addEventListener(Event.COMPLETE,dataGotHandler);
    }

    function dataGotHandler(e:Event){
    var returnData:String = e.target.data;
    trace(returnData);
    var result:Array = returnData.split(“,”);
    mytxt1.text = result[0]; //mytxt1是fla檔案的文字欄位
    mytxt2.text = result[1]; //mytxt2是fla檔案的文字欄位
    }
    }
    }

    PHP code:

发表评论