我如何使用此URLRequest脚本?

时间:2014-02-09 16:04:51

标签: actionscript-3 flash

我一周前开始学习ActionScript 3,并且偶然发现了一个巨大的学习曲线。我在互联网上找到了这个脚本:

var _loader:URLLoader;
var _request:URLRequest;

function loadData():void {
    _loader = new URLLoader();
    _request = new URLRequest("http://www.travoid.com/game/Purchase.php?gid=1");
    _request.method = URLRequestMethod.POST;
    _loader.addEventListener(Event.COMPLETE, onLoadData);
    _loader.addEventListener(IOErrorEvent.IO_ERROR, onDataFailedToLoad);
    _loader.addEventListener(IOErrorEvent.NETWORK_ERROR, onDataFailedToLoad);
    _loader.addEventListener(IOErrorEvent.VERIFY_ERROR, onDataFailedToLoad);
    _loader.addEventListener(IOErrorEvent.DISK_ERROR, onDataFailedToLoad);
    _loader.load(_request);
}
function onLoadData(e:Event):void {
    trace("onLoadData",e.target.data);
}
function onDataFailedToLoad(e:IOErrorEvent):void {
    trace("onDataFailedToLoad:",e.text);
}

这一切似乎都有效,并且没有产生任何错误或输出,但是当我使用下一部分代码(我制作)时出现问题

function vpBuy(e:MouseEvent):void{
    loadData();
    if (e.target.data == "false") {
        inf_a.visible = true;
        inf_b.visible = true;
        inf_c.visible = true;
        inf_d.visible = true;
        btn_ok.visible = true;
    }
}

我收到此错误:

  

ReferenceError:错误#1069:找不到属性数据   flash.display.SimpleButton并没有默认值。在   travoid_fla :: MainTimeline / vpBuy()onLoadData

可能抛出这个的部分是:

if (e.target.data == "false") {

我希望e.target.data是将值存储在网页上的内容(显示为false),但显然不是。使用我在互联网上找到的代码,将信息存储在网页上的是什么?

谢谢, 伊桑韦伯斯特。

1 个答案:

答案 0 :(得分:1)

URLLoader加载方法是异步的,您必须在triyng之前等待服务器响应才能获得结果。

onLoadData和onDataFailedToLoad函数就是这样做的。当响应被很好地接收时,调用onLoadData函数,你可以在e.target.data或_loader.data中获取数据

函数vpBuy中的错误是您尝试访问触发MouseEvent(可能是Button)的对象上的data属性,并且该对象没有这样的变量。

尝试以下方法:

/** button clicked load the datas from the server **/
function vpBuy(e:MouseEvent):void
{
    // load the datas from the server
    loadData();
}

/** the datas are well loaded i can access them **/
function onLoadData(e:Event):void 
{
    trace("onLoadData",e.target.data);
    if( e.target.data == "false" ) 
    {
        inf_a.visible = true;
        inf_b.visible = true;
        inf_c.visible = true;
        inf_d.visible = true;
        btn_ok.visible = true;
    }
}

希望这可以帮助你:)