在执行flash的as脚本时,出现了15秒超时错误。查看adobe官网文档有相关描述
http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/runtimeErrors.html
出现15秒超时错误后,脚本可以继续执行 15 秒,然后将终止脚本并引发编号为 1503 的运行时错误(脚本在 30 秒内未能退出,终止其执行)。
应用背景: 在flash中有一按钮,增加了点击事件处理函数:flaClickHandle,再处理函数中通过ExternalInterface.call,调用jsp页面中的一js函数:callbackForFla,在该函数中,执行window.showModalDialog。
在测试中,前面执行正常,当将window.showModalDialog打开的模态窗口关闭时,原页面中的flash报15秒超时错误。
初步分析,在callbackForFla,中的window.showModalDialog函数,是在模态窗口关闭时才返回。flash将它调用的外部函数callbackForFla的执行时间,计作as脚本的执行时间,及flaClickHandle函数的执行时间。这种情况下很容易,出现15秒超时错误。因为一个模态窗口只开15秒,就关闭。
针对这种情况的一种解决方法,就是把window.showModalDialog换为window.open
更一般的解决方法时,更改flash发布设置中的超时时间(不推荐,治标不治本)
还有一中方法是(推荐):在flash要掉用的js函数中使用js中的定时器(setTimeout,setInterval)去执行真正的目标的函数,而本函数会很快返回。以上为例就是:
flaClickHandle-》ExternalInterface.call-》callbackForFla-》timerRun-》targetFun
function callbackForFla(){
window.setTimeout("timerRun",100); //该语句的执行时间不会超过15秒
}
function timerRun(){
window.showModalDialog...//或者其他targetFun函数
}