Actionscript 3 ActionScript中的随机错误-内存溢出?

Actionscript 3 ActionScript中的随机错误-内存溢出?,actionscript-3,apache-flex,actionscript,flash-builder,adobe-indesign,Actionscript 3,Apache Flex,Actionscript,Flash Builder,Adobe Indesign,我们正在使用Adobe Flash Builder 4.6开发InDesign CS6扩展,因此,我将JavaScript转换为动作脚本,并将其直接放入代码中。但错误仍在继续出现 代码如下: var pageItem:PageItem = (component as BaseComponent).pageItem; var frame:Frame = new Frame(pageItem); var itemIsHidden:Boolean = !pageItem.visible; var te

我们正在使用Adobe Flash Builder 4.6开发InDesign CS6扩展,因此,我将JavaScript转换为动作脚本,并将其直接放入代码中。但错误仍在继续出现

代码如下:

var pageItem:PageItem = (component as BaseComponent).pageItem;
var frame:Frame = new Frame(pageItem);
var itemIsHidden:Boolean = !pageItem.visible;
var tempFile:File;
var container:Rectangle = InDesign.app.activeDocument.rectangles.add(InDesign.app.activeDocument.activeLayer); // (2)

try {
    pageItem.visible = true;
    var prefix:String = "TMP_IMAGE_CONTAINER";
    var bounds:Array = frame.convertToBounds();

    Log.log("Container id = " + container.id);
    Log.log("bounds = " + bounds);
    Log.log("frame.ax = " + frame.ax + ", frame.ay = " + frame.ay);

    container.name = prefix+container.id; // (3)
    container.geometricBounds = bounds; // (1)
    container.strokeWeight = 0;
    container.strokeColor = InDesign.app.activeDocument.swatches.item("None");
    container.fillColor = InDesign.app.activeDocument.swatches.item("None");
    container.visible = true;
    container.transparencySettings.blendingSettings.opacity = 100;

    // create a duplicate of the pageItem in the tmp container
    var copyItem:PageItem = pageItem.duplicate(InDesign.app.activeDocument.activeLayer);
    copyItem.transparencySettings.blendingSettings.opacity = 100;
    copyItem.locked = false;
    container.geometricBounds = bounds;
    container.move([frame.ax,frame.ay]); // (4)
    copyItem.visible = true;

    InDesign.app.select(copyItem);
    InDesign.app.cut();
    InDesign.app.select(container);
    InDesign.app.pasteInto();

    //InDesign.app.scriptArgs.setValue("container", prefix+container.id);

    // [...]

} catch (e:Error) {
    Log.log(e.toString());
    Log.log(e.getStackTrace());
} finally {
    if (container) {
        container.remove();
    }
        pageItem.visible = !itemIsHidden;
}
开始时的日志语句是为了确保变量在此点定义。然而,我总是以一种看似随机的方式出错:1

或2

或3

或4

导出同一对象时,错误始终出现。我们检查了扩展中的语法和InDesign中的对象,但一切似乎都很好

我不熟悉动作脚本,但作为开发人员,我的常识告诉我,1边界是一个数组,其中有4个条目,如日志消息中所述;2即使没有有效的父级,每次我使用同一文档时,扩展也应该在这里崩溃

这可能是内存溢出错误,因为这些错误只出现在包含许多对象的InDesign文件中,但我找不到增加它的选项


注意:该类中使用的矩形是来自的类。

好吧,似乎有时没有边界或类似的smth。最好在出现问题时编写if-else语句并记录日志。我无法想象InDesign会有这样的错误,所以有时会出现错误:简单地说,如果!每个变量的值语句。出于这么多原因,我不建议使用AS3包装器。首先,Adobe已经放弃了对基于Flash的扩展的支持。其次,使用包装器将限制以后将扩展移植到基于html的扩展。无论何时需要与InDesign和AS3进行交互,我都会继续使用纯extendscript脚本来处理用户交互和界面。我还记得,将对象从AS3传递到extendscript可能会遇到一些问题。在某些情况下,我将数据转换为字符串或xml字符串,并在extendscript中对其求值。当然,数组边界是数组,但您可能会处理AS3实例化数组对象与ExtendScript实例化对象数组,这可能会导致问题。哦,我现在想起了一些关于这件事的事……看看,特别是我的代表;
[INFO] [29:1786:739] [ImageExporter::export():65] Container id = 12818
[INFO] [29:1787:386] [ImageExporter::export():66] bounds = 0,0,70,526
[INFO] [29:1787:931] [ImageExporter::export():67] frame.ax = 334, frame.ay = 1197
[INFO] [29:1799:462] [ImageExporter::export():113] Error: Invalid value for set property 'geometricBounds'. Expected Array of 4 Units, but received null.
Error: Cannot create page item. No valid parent found.
    at flash.external::HostObject/__call()
    at com.adobe.csawlib::CSHostObject/hostCall()
    at com.adobe.indesign::Rectangles/add()
    at ImageExporter/export()[...export/ImageExporter.as:58]
[INFO] [14:843:201] [ImageExporter::export():65] Container id = 12818
[INFO] [14:843:202] [ImageExporter::export():66] bounds = 0,0,70,526
[INFO] [14:843:202] [ImageExporter::export():67] frame.ax = 334, frame.ay = 1197
[INFO] [14:843:239] [ImageExporter::export():114] Error: Invalid value for set property 'name'. Expected String, but received null.
[INFO] [17:1025:895] [ImageExporter::export():65] Container id = 12818
[INFO] [17:1025:896] [ImageExporter::export():66] bounds = 0,0,70,526
[INFO] [17:1025:896] [ImageExporter::export():67] frame.ax = 334, frame.ay = 1197
[INFO] [17:1025:964] [ImageExporter::export():115] Error: Missing required parameter 'to' for method 'move'.
    at flash.external::HostObject/__call()
    at com.adobe.csawlib::CSHostObject/hostCall()
    at com.adobe.indesign::Rectangle/move()
    at ImageExporter/export()[.../export/ImageExporter.as:83]