我有一个用 Flash 编写的应用程序(实际上它是用 Haxe 编写的并在 SHWX 下运行,但在这里没关系)。我有一个非常复杂的任务,它消耗大量 CPU 功率,有时执行时间超过 15 秒。如果发生这种情况,我会收到一条错误消息,提示“脚本执行的时间超过了 15 秒的默认超时时间。” 一切都崩溃了。
我知道我可以使用延续来阻止这种情况的发生,但是有没有办法延长“默认超时期限”?这是一个开发者工具,responsivnes 并不重要。
另一种方法是通过 -swf-lib 开关链接基于swfmill的 swf 并在此处设置此 ScriptLimits 标记,然后 haxe 将重新使用它。
在 CS3+ 中,您只需在发布时设置 swf 的“脚本时间限制”属性 - 它位于发布设置的 flash 选项卡中
测试应用程序时,请注意 scriptTimeLimit 属性。如果应用程序初始化时间过长,Flash Player 会警告用户脚本导致 Flash Player 运行缓慢并提示用户中止应用程序。如果是这种情况,您可以将标记的 scriptTimeLimit 属性设置为更长的时间,以便 Flex 应用程序有足够的时间进行初始化。
但是,scriptTimeLimit 属性的默认值为 60 秒,这也是最大值,因此如果您之前已将其设置为较低的值,则只能增加该值。您很少需要更改此值。
来源:http ://livedocs.adobe.com/flex/3/html/help.html?content=performance_05.html
我不确定是否有更本地的东西来完成这项工作,但似乎有一个命令可以破解 SWF 以添加 ScriptLimits 标记以延长超时期限。
我建议将您的功能分成更小的块并将它们分布在多个帧上。这样您就可以显示进度动画,并且 Flash 应用程序不会无响应。因此,例如,如果您必须循环超过 1000 个项目,则在一帧中执行 100 个,然后在下一帧中再执行 100 个,依此类推,直到您处理完所有项目。我不建议破解您的 swf。