- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定这里到底发生了什么,但确实发现 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 - 是 Flash/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/
我是一名优秀的程序员,十分优秀!