我正在尝试从一个C#项目中运行一个JSFL脚本,该脚本打开一个.fla文件,对其进行n次修改,然后在关闭之前导出n个.swf文件。在C#项目中,我通过Process类启动了JSFL脚本。我尝试通过myProcess.WaitForExit()命令等待JSFL进程完成,但它不起作用。我的代码C#的其余部分在JSFL进程完成导出其.swf文件之前执行。有没有办法抛出C#项目可以从JSFL文件或其他解决方案中捕获的东西?
发布于 2011-09-07 05:37:46
一种解决方案(尽管很可能不是最好的)是让您的C#代码查找正在创建的SWF文件。只有在更新/创建了它们之后,JSFL脚本才会完成,这样您就知道C#可以安全地继续运行了。如果无法知道C#程序需要查找多少SWF文件,您可以让C#脚本写入某种类型的日志文件,并让JSFL程序按一定的时间间隔读取该日志,寻找某种标记来指示JSFL脚本已经完成了它的任务。
诚然,这可能远不是最好的方法(而且我对C#的了解还不够深入,无法知道您看到的是设计好的还是有问题的迹象)。但可能的情况是,运行JSFL/Flash是完全异步的,如果是这样的话,日志文件方法可能是解决问题的最快途径。
发布于 2011-10-21 05:57:31
我在另一个调用外部JSFL脚本的应用程序中也遇到了同样的问题。
我所做的是在完成后将一个文件写入目标目录,并在调用的应用程序中轮询该文件。一旦文件出现,我就知道任务已经完成,我删除了临时文件,然后继续。哦-在开始之前,我会查找并删除所有临时文件,这样我就不会得到误报。
它不像活动那样好,但你必须利用你已经拥有的东西。
发布于 2012-07-10 19:39:29
您是否尝试过设置一个自定义侦听器,该侦听器将在JSFL完成时执行函数。不要忘记,它仍然是基于ECMA的,ECMA是一种过程化语言。顺便说一句,JSFL有一个低级的C API。C LEVEL API
https://stackoverflow.com/questions/7326394
复制相似问题