as3找出as3是否忙于任何事情

时间:2012-06-20 09:42:21

标签: actionscript-3 sdk adobe-indesign

我想知道as3正在做什么在bakground做任何事情。我的确切问题是我正在尝试使用indesign sdk打包文档,就在我导入xml之前,问题是文件在打包时无法保存,我很确定这是因为导入尚未准备好。这是代码:

    IDScriptingEventAdapter.getInstance().addEventListener(Document.AFTER_IMPORT, afterImport);         
    document.xmlElements.item(0).xmlElements.item("test").importXML(File.applicationStorageDirectory.resolvePath("temp/styles.xml"));

public function afterImport(event:ImportExportEvent):void {
            var docPackaged:Boolean=app.activeDocument.packageForPrint(packagePath, true, true, true, true, true, true, true);
        }

正如您可以看到使用Document.AFTER_IMPORT侦听器调用该函数但由于某种原因它很快就会被触发。

经过一些测试后,我注意到导入已经完成,但是当处理程序执行时,xmlElements还没有到位。 因此,文档在打包时尚未就绪,因此无法保存文档。

我得到的正确错误是:

Cannot save a copy of “CataloogCS5.indd”.\n 

那么是否有一种方法可以看出AS是否不再执行任何操作(添加了所有xmlElements)或其他解决方案?

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用while循环检查工作流中最后一个xmlElement的有效性,或者尝试保存文档而不能,然后一旦可以进行打包,就可以了?

您可以添加计时器以在打包过程中添加暂停。

while(!doc.xmlElements [0] .xmlElements [-1] .isValid){// wait}

function checkIfPackageable() {    尝试    {       doc.save();       返回;    }    赶上(E)    {        checkIfPackageable();    } }

可能是更好的选择。

希望它有所帮助,

卢瓦克