如何处理AS3中的执行时错误(错误#1502)

时间:2011-11-14 23:23:27

标签: flash actionscript-3

我想知道是否有办法在AS3中为#1502执行时错误添加错误处理程序。

几点说明:

  • 我知道可以在发布选项上设置最大脚本执行时间。它的值高达16位(0-65535)。所以最多18个小时。在我使用它的上下文中60秒后脚本不会被终止。

  • 我在使用mProjector构建的应用程序中使用它。按钮上有一个事件监听器,用于打开文件浏览器对话框。只要浏览器处于打开状态,事件处理程序就不会继续。如果超过最大脚本执行时间,我会得到#1502。

  • 如果我无法将此限制设置得非常高。尽管如此,如果你打开一天的对话就会打破一些会破坏的东西并不是很好。它永远不会发生,但我仍然想知道是否有一种正确的方法来避免这样的事情。

感谢。

其他信息:

缩短代码:

bttn.addEventListener(MouseEvent.CLICK, browse);
function browse(e:Event) {
    var selectedFilesString:String = mSystem.chooseFiles(chooseFileTitle, initFileName, initFolderName, fileFilter, defaultFileType);
    ...
}

所以这涉及到此处详述的mSystem.chooseFiles()方法:

http://www.screentime.com/software/flash-projector/docs/AS3-mSys-chooseFiles.htm

但就像我说我感兴趣的是,这个错误有一个错误处理程序。不是可能导致它的原因,不是什么原因,或者mProjector是否得到很好的实施等等。

3 个答案:

答案 0 :(得分:2)

修改

你可以抓住ScriptTimeoutError,但只能抓一次。请参阅this blog post

答案 1 :(得分:1)

我在使用Zinc将我的应用程序包装到.EXE时遇到了类似的问题,其中基本上脚本在等待用户触发将被触发回动作脚本的事件时超时。实际上,这是一个确认对话框,可能与您使用不同的外部接口/包装器遇到的情况完全相同。

使用最新版本的Zinc,他们已承诺解决此类问题,但在您的情况下,我会查看mProjector是否有任何异步对话框调用,不会停止操作脚本,甚至可能关闭设置几秒钟后的对话框。

如果没有,那么你要么将超时设置为荒谬的东西,我感到非常凌乱,我同意;但是,你将它包装在一个可以让它感觉至少不那么凌乱的EXE中,或者你使用自己的对话框并远离任何完全停止你的动作脚本的mProject调用。

我简短地看了一眼,但似乎没有任何东西出现,也许你更熟悉了: http://www.screentime.com/software/flash-projector/docs

祝你好运,如果你得到一个更好的解决方案,请告诉我,因为我很好奇mProject将如何处理它与Zinc。

答案 2 :(得分:0)

你可以在调用FileReference.browse()之前尝试启动一个Timer,如果定时器完成而没有浏览操作完成调用FileReference.cancel()