gpt4 book ai didi

flash - 在AS3中,URLLoader.close();如果没有加载任何内容会导致问题吗?

转载 作者:行者123 更新时间:2023-12-02 01:46:08 27 4
gpt4 key购买 nike

我不确定这里到底发生了什么,但确实发现 URLLoader.close(); 是原因。

我有一个简单的应用程序,用户在文本框中输入信息,然后我将该信息发送到 PHP 脚本并返回输出。收到输出后,您可以单击一个新按钮来重置应用程序。错误在于单击该按钮后执行的函数。

如果您单击该按钮来重置应用程序,它会重置所有变量等,但似乎我的 addEventListener 方法不会执行。

这是重置函数:

//Reset function if the Reset button is pressed
function clearApplication(e:MouseEvent):void {
receivedData="";
data1TextBox.text="";
data2TextBox.text="";
resetButton.visible=false;
resetButton.removeEventListener(MouseEvent.CLICK, clearApplication, false);
goButton.visible=true;
goButton.addEventListener(MouseEvent.CLICK, getData, false, 0, true);
myLoader.close();
}

执行后,我的 goButton 不再起作用。

如果单击goButton,它应该执行以下操作:

function getData(e:MouseEvent):void {
if (data1TextBox.text!=""&&data2TextBox.text!="") {
goButton.removeEventListener(MouseEvent.CLICK, getData, false);
goButton.visible=false;

postVars = new URLVariables();
postVars.data1=data1TextBox.text;
postVars.data2=data2TextBox.text;

myRequest=new URLRequest("URL");
myRequest.method=URLRequestMethod.POST;
myRequest.data=postVars;

myLoader.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
myLoader.load(myRequest);
}
}

最后是 onComplete 函数:

function onComplete(e:Event):void {
receivedData=e.target.data;

outputTextBox.text=receivedData;

resetButton.visible=true;
resetButton.addEventListener(MouseEvent.CLICK, clearApplication, false, 0, true);
}

请注意,函数内未声明的任何变量都是全局声明的。

所以,我偶然发现这样一个事实:如果我从 clearApplication 函数中删除 myLoader.close(); ,那么一切都会顺利进行。如果所有文本字段都已填写,我的 goButton 没有问题并按预期执行。

我知道如果当前没有加载任何内容,则没有必要,但它就在那里,因为我永远不知道它是否会挂起并需要取消。为什么myLoader.close();会导致这样的事情发生?

编辑:抱歉,在尝试简化示例代码时犯了一些错误。

最佳答案

Does URLLoader.close() cause problems if nothing is being loaded?

是的,确实如此。来自 livedocs page for URLLoader.close()

Any load operation in progress is immediately terminated. If no URL is currently being streamed, an invalid stream error is thrown.

显然您没有使用 Flash 播放器的调试版本,因此没有看到抛出的错误。 debug version of Flash player - 是 Fl​​ash/Flex 开发人员的必备工具。

如果您在 try block 中调用 close() 并捕获错误,您就可以看到发生了什么。

try 
{
myLoader.close();
}
catch(e:Error)
{
trace("An error occurred " + e.toString());
}

关于flash - 在AS3中,URLLoader.close();如果没有加载任何内容会导致问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com