2011-11-14 60 views
2

我想知道是否有方法为AS3中的#1502执行时间错误添加错误处理程序。如何在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被很好地落实与否等

回答

2

编辑

你能赶上ScriptTimeoutError,但只有一次。见this blog post

+0

我试图通过上面的注释来避免这种回答。我真的处于发生超时的情况。不过谢谢。 –

+0

从它们的API(它确实不使用事件处理来防止这种错误)来判断,在我看来,您应该联系mProjector组件的开发人员 - 这显然是一个设计缺陷。无论如何,我已经编辑了我的答案。 – weltraumpirat

+0

感谢您的链接。那很有意思。你得到的太糟糕了,但有一次抓住了这一点。 –

0

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

+0

我没有使用FileReference类,但谢谢。 –

1

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

随着最新版本的锌,他们已承诺解决这种类型的问题,但在你的情况下,我会看看mProjector是否有任何异步对话框调用,不会停止动作脚本,或甚至设置为几秒钟后关闭对话框。

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

我抬头看了一眼在这里,但似乎没有什么蹦出来,也许你更熟悉: http://www.screentime.com/software/flash-projector/docs

祝你好运,如果你得到一个更好的解决办法想通了,让我知道,因为我很好奇mProject将如何应对对锌。

+1

我看到有一个mApplication.abortFunction(),它表示它是用于异步调用,但我会说这是值得一试的,文档在这里:[http://www.screentime.com/software/flash-projector/docs/ AS3-MAPP-abortFunction.htm](http://www.screentime.com/software/flash-projector/docs/AS3-mApp-abortFunction.htm) – ToddBFisher

相关问题